@ui5/webcomponents 0.31.17 → 0.31.18

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 (71) hide show
  1. package/dist/Card.js +19 -2
  2. package/dist/ComboBox.js +10 -0
  3. package/dist/FileUploader.js +8 -0
  4. package/dist/Input.js +10 -2
  5. package/dist/Label.js +1 -1
  6. package/dist/List.js +8 -5
  7. package/dist/ListItem.js +18 -3
  8. package/dist/Toast.js +11 -0
  9. package/dist/TreeListItem.js +2 -12
  10. package/dist/api.json +1 -1
  11. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  12. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  13. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  14. package/dist/generated/i18n/i18n-defaults.js +2 -2
  15. package/dist/generated/templates/CardTemplate.lit.js +1 -1
  16. package/dist/generated/templates/CustomListItemTemplate.lit.js +1 -1
  17. package/dist/generated/templates/FileUploaderTemplate.lit.js +1 -1
  18. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  19. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  20. package/dist/generated/templates/StandardListItemTemplate.lit.js +1 -1
  21. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +1 -1
  22. package/dist/generated/templates/ToastTemplate.lit.js +2 -1
  23. package/dist/generated/templates/TreeListItemTemplate.lit.js +1 -1
  24. package/dist/generated/templates/TreeTemplate.lit.js +1 -1
  25. package/dist/generated/themes/Badge.css.js +1 -1
  26. package/dist/generated/themes/Button.css.js +1 -1
  27. package/dist/generated/themes/Card.css.js +1 -1
  28. package/dist/generated/themes/CheckBox.css.js +1 -1
  29. package/dist/generated/themes/ComboBox.css.js +1 -1
  30. package/dist/generated/themes/DatePicker.css.js +1 -1
  31. package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
  32. package/dist/generated/themes/Input.css.js +1 -1
  33. package/dist/generated/themes/InvisibleTextStyles.css.js +1 -1
  34. package/dist/generated/themes/Label.css.js +1 -1
  35. package/dist/generated/themes/Link.css.js +1 -1
  36. package/dist/generated/themes/ListItem.css.js +1 -1
  37. package/dist/generated/themes/MessageStrip.css.js +1 -1
  38. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  39. package/dist/generated/themes/Panel.css.js +1 -1
  40. package/dist/generated/themes/RadioButton.css.js +1 -1
  41. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  42. package/dist/generated/themes/Select.css.js +1 -1
  43. package/dist/generated/themes/SliderBase.css.js +1 -1
  44. package/dist/generated/themes/StepInput.css.js +1 -1
  45. package/dist/generated/themes/Switch.css.js +1 -1
  46. package/dist/generated/themes/TextArea.css.js +1 -1
  47. package/dist/generated/themes/Tokenizer.css.js +1 -1
  48. package/dist/generated/themes/Tree.css.js +1 -1
  49. package/dist/generated/themes/TreeListItem.css.js +1 -1
  50. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  51. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  52. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  53. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  54. package/dist/i18n/messagebundle.properties +3 -0
  55. package/package.json +7 -7
  56. package/src/Card.hbs +1 -1
  57. package/src/Card.js +19 -2
  58. package/src/ComboBox.js +10 -0
  59. package/src/FileUploader.hbs +1 -0
  60. package/src/FileUploader.js +8 -0
  61. package/src/Input.js +10 -2
  62. package/src/Label.js +1 -1
  63. package/src/List.hbs +1 -2
  64. package/src/List.js +8 -5
  65. package/src/ListItem.hbs +2 -1
  66. package/src/ListItem.js +18 -3
  67. package/src/Toast.hbs +13 -11
  68. package/src/Toast.js +11 -0
  69. package/src/Tree.hbs +1 -1
  70. package/src/TreeListItem.js +2 -12
  71. package/src/i18n/messagebundle.properties +3 -0
package/dist/Card.js CHANGED
@@ -3,6 +3,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import { fetchI18nBundle, getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
4
  import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
5
5
  import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
6
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
6
7
  import CardTemplate from "./generated/templates/CardTemplate.lit.js";
7
8
  import Icon from "./Icon.js";
8
9
 
@@ -137,6 +138,18 @@ const metadata = {
137
138
  defaultValue: "",
138
139
  },
139
140
 
141
+ /**
142
+ * Define the <code>aria-level</code> attribute of the component
143
+ * <b>Note: </b> If the interactive property is set, <code>aria-level</code> attribute is not rendered at all.
144
+ * @private
145
+ * @type {Integer}
146
+ * @defaultValue 3
147
+ */
148
+ ariaLevel: {
149
+ type: Integer,
150
+ defaultValue: 3,
151
+ },
152
+
140
153
  _headerActive: {
141
154
  type: Boolean,
142
155
  noAttribute: true,
@@ -230,8 +243,12 @@ class Card extends UI5Element {
230
243
  return this.headerInteractive ? "button" : "heading";
231
244
  }
232
245
 
233
- get ariaLevel() {
234
- return this.headerInteractive ? undefined : "3";
246
+ get _ariaLevel() {
247
+ if (this.interactive) {
248
+ return undefined;
249
+ }
250
+
251
+ return this.ariaLevel;
235
252
  }
236
253
 
237
254
  get hasHeader() {
package/dist/ComboBox.js CHANGED
@@ -4,6 +4,7 @@ import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
4
4
  import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
5
5
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
6
6
  import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
7
+ import announce from "@ui5/webcomponents-base/dist/util/InvisibleMessage.js";
7
8
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
8
9
  import "@ui5/webcomponents-icons/dist/decline.js";
9
10
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
@@ -24,6 +25,8 @@ import {
24
25
  VALUE_STATE_INFORMATION,
25
26
  INPUT_SUGGESTIONS_TITLE,
26
27
  SELECT_OPTIONS,
28
+ LIST_ITEM_POSITION,
29
+ LIST_ITEM_SELECTED,
27
30
  } from "./generated/i18n/i18n-defaults.js";
28
31
 
29
32
  // Templates
@@ -776,6 +779,13 @@ class ComboBox extends UI5Element {
776
779
  this._itemFocused = true;
777
780
  }
778
781
 
782
+ announceSelectedItem(indexOfItem) {
783
+ const itemPositionText = this.i18nBundle.getText(LIST_ITEM_POSITION, [indexOfItem + 1], [this._filteredItems.length]);
784
+ const itemSelectionText = this.i18nBundle.getText(LIST_ITEM_SELECTED);
785
+
786
+ announce(`${itemPositionText} ${itemSelectionText}`, "Polite");
787
+ }
788
+
779
789
  get _headerTitleText() {
780
790
  return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
781
791
  }
@@ -274,15 +274,23 @@ class FileUploader extends UI5Element {
274
274
  });
275
275
  }
276
276
 
277
+ _onclick(event) {
278
+ if (event.isMarked === "button") {
279
+ this._input.click(event);
280
+ }
281
+ }
282
+
277
283
  _onkeydown(event) {
278
284
  if (isEnter(event)) {
279
285
  this._input.click(event);
286
+ event.preventDefault();
280
287
  }
281
288
  }
282
289
 
283
290
  _onkeyup(event) {
284
291
  if (isSpace(event)) {
285
292
  this._input.click(event);
293
+ event.preventDefault();
286
294
  }
287
295
  }
288
296
 
package/dist/Input.js CHANGED
@@ -836,6 +836,14 @@ class Input extends UI5Element {
836
836
  return !!this._isPopoverOpen;
837
837
  }
838
838
 
839
+ /**
840
+ * Checks if the value state popover is open.
841
+ * @returns {boolean} true if the value state popover is open, false otherwise
842
+ */
843
+ isValueStateOpened() {
844
+ return !!this._isPopoverOpen;
845
+ }
846
+
839
847
  async openPopover() {
840
848
  const popover = await this._getPopover();
841
849
 
@@ -1168,7 +1176,8 @@ class Input extends UI5Element {
1168
1176
  return {
1169
1177
  popoverValueState: {
1170
1178
  "ui5-valuestatemessage-root": true,
1171
- "ui5-responsive-popover-header": !this.isOpen(),
1179
+ "ui5-valuestatemessage-header": true,
1180
+ "ui5-responsive-popover-header": !this.isValueStateOpened(),
1172
1181
  "ui5-valuestatemessage--success": this.valueState === ValueState.Success,
1173
1182
  "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
1174
1183
  "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
@@ -1185,7 +1194,6 @@ class Input extends UI5Element {
1185
1194
  suggestionPopoverHeader: {
1186
1195
  "display": this._listWidth === 0 ? "none" : "inline-block",
1187
1196
  "width": `${this._listWidth}px`,
1188
- "padding": "0.925rem 1rem",
1189
1197
  },
1190
1198
  suggestionsPopover: {
1191
1199
  "max-width": `${this._inputWidth}px`,
package/dist/Label.js CHANGED
@@ -42,7 +42,7 @@ const metadata = {
42
42
  },
43
43
 
44
44
  /**
45
- * Defines whether semi-colon is added to the <code>ui5-label</code> text.
45
+ * Defines whether colon is added to the component text.
46
46
  * <br><br>
47
47
  * <b>Note:</b> Usually used in forms.
48
48
  * @type {boolean}
package/dist/List.js CHANGED
@@ -208,16 +208,19 @@ const metadata = {
208
208
  },
209
209
 
210
210
  /**
211
- * Used to externally manipulate the role of the list
211
+ * Defines the accessible role of the component.
212
+ * <br><br>
213
+ * <b>Note:</b> If you use notification list items,
214
+ * it's recommended to set <code>accessible-role="list"</code> for better accessibility.
212
215
  *
213
216
  * @private
214
217
  * @type {String}
215
- * @defaultvalue "listbox"
216
- * @since 1.0.0-rc.9
218
+ * @defaultvalue "list"
219
+ * @since 1.0.0-rc.15
217
220
  */
218
- accRole: {
221
+ accessibleRole: {
219
222
  type: String,
220
- defaultValue: "listbox",
223
+ defaultValue: "list",
221
224
  },
222
225
 
223
226
  /**
package/dist/ListItem.js CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  ARIA_LABEL_LIST_ITEM_CHECKBOX,
14
14
  ARIA_LABEL_LIST_ITEM_RADIO_BUTTON,
15
15
  LIST_ITEM_SELECTED,
16
+ LIST_ITEM_NOT_SELECTED,
16
17
  } from "./generated/i18n/i18n-defaults.js";
17
18
 
18
19
  // Styles
@@ -77,13 +78,13 @@ const metadata = {
77
78
  *
78
79
  * @private
79
80
  * @type {String}
80
- * @defaultvalue "option"
81
+ * @defaultvalue "listitem"
81
82
  * @since 1.0.0-rc.9
82
83
  *
83
84
  */
84
85
  role: {
85
86
  type: String,
86
- defaultValue: "option",
87
+ defaultValue: "listitem",
87
88
  },
88
89
 
89
90
  _mode: {
@@ -317,6 +318,20 @@ class ListItem extends ListItemBase {
317
318
  return undefined;
318
319
  }
319
320
 
321
+ get ariaSelectedText() {
322
+ let ariaSelectedText;
323
+
324
+ // Selected state needs to be supported separately since now the role mapping is list -> listitem[]
325
+ // to avoid the issue of nesting interactive elements, ex. (option -> radio/checkbox);
326
+ // The text is added to aria-describedby because as part of the aria-labelledby
327
+ // the whole content of the item is readout when the aria-labelledby value is changed.
328
+ if (this.ariaSelected !== undefined) {
329
+ ariaSelectedText = this.ariaSelected ? this.i18nBundle.getText(LIST_ITEM_SELECTED) : this.i18nBundle.getText(LIST_ITEM_NOT_SELECTED);
330
+ }
331
+
332
+ return ariaSelectedText;
333
+ }
334
+
320
335
  get deleteText() {
321
336
  return this.i18nBundle.getText(DELETE);
322
337
  }
@@ -328,7 +343,7 @@ class ListItem extends ListItemBase {
328
343
  ariaLevel: undefined,
329
344
  ariaLabel: this.i18nBundle.getText(ARIA_LABEL_LIST_ITEM_CHECKBOX),
330
345
  ariaLabelRadioButton: this.i18nBundle.getText(ARIA_LABEL_LIST_ITEM_RADIO_BUTTON),
331
- listItemAriaLabel: this.ariaSelected ? this.i18nBundle.getText(LIST_ITEM_SELECTED) : undefined,
346
+ ariaSelectedText: this.ariaSelectedText,
332
347
  };
333
348
  }
334
349
 
package/dist/Toast.js CHANGED
@@ -79,6 +79,15 @@ const metadata = {
79
79
  hover: {
80
80
  type: Boolean,
81
81
  },
82
+
83
+ /**
84
+ * Indicates whether the component DOM is rendered.
85
+ * @type {boolean}
86
+ * @private
87
+ */
88
+ domRendered: {
89
+ type: Boolean,
90
+ },
82
91
  },
83
92
  slots: /** @lends sap.ui.webcomponents.main.Toast.prototype */ {
84
93
  /**
@@ -206,6 +215,7 @@ class Toast extends UI5Element {
206
215
  }
207
216
 
208
217
  _initiateOpening() {
218
+ this.domRendered = true;
209
219
  requestAnimationFrame(_ => {
210
220
  this.open = true;
211
221
  });
@@ -215,6 +225,7 @@ class Toast extends UI5Element {
215
225
  if (this.hover) {
216
226
  return;
217
227
  }
228
+ this.domRendered = false;
218
229
  this.open = false;
219
230
  }
220
231
 
@@ -10,7 +10,6 @@ import {
10
10
  TREE_ITEM_ARIA_LABEL,
11
11
  TREE_ITEM_EXPAND_NODE,
12
12
  TREE_ITEM_COLLAPSE_NODE,
13
- LIST_ITEM_SELECTED,
14
13
  } from "./generated/i18n/i18n-defaults.js";
15
14
 
16
15
  // Template
@@ -275,7 +274,8 @@ class TreeListItem extends ListItem {
275
274
  ariaLevel: this.level,
276
275
  posinset: this._posinset,
277
276
  setsize: this._setsize,
278
- listItemAriaLabel: this.ariaLabelText,
277
+ ariaSelectedText: this.ariaSelectedText,
278
+ listItemAriaLabel: this.i18nBundle.getText(TREE_ITEM_ARIA_LABEL),
279
279
  };
280
280
  }
281
281
 
@@ -304,16 +304,6 @@ class TreeListItem extends ListItem {
304
304
  }
305
305
  }
306
306
 
307
- get ariaLabelText() {
308
- let text = this.i18nBundle.getText(TREE_ITEM_ARIA_LABEL);
309
-
310
- if (this.selected) {
311
- text += ` ${this.i18nBundle.getText(LIST_ITEM_SELECTED)}`;
312
- }
313
-
314
- return text;
315
- }
316
-
317
307
  get iconAccessibleName() {
318
308
  return this.expanded ? this.i18nBundle.getText(TREE_ITEM_COLLAPSE_NODE) : this.i18nBundle.getText(TREE_ITEM_EXPAND_NODE);
319
309
  }