@ui5/webcomponents 0.31.14 → 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 (129) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +1 -1
  3. package/dist/Avatar.js +8 -6
  4. package/dist/CalendarHeader.js +75 -1
  5. package/dist/Card.js +19 -2
  6. package/dist/ComboBox.js +10 -0
  7. package/dist/DateComponentBase.js +12 -0
  8. package/dist/DatePicker.js +48 -9
  9. package/dist/DayPicker.js +21 -2
  10. package/dist/FileUploader.js +8 -0
  11. package/dist/GroupHeaderListItem.js +4 -0
  12. package/dist/Icon.js +6 -6
  13. package/dist/Input.js +10 -2
  14. package/dist/Label.js +1 -1
  15. package/dist/List.js +8 -5
  16. package/dist/ListItem.js +25 -4
  17. package/dist/Panel.js +17 -5
  18. package/dist/Popup.js +16 -5
  19. package/dist/RadioButton.js +15 -2
  20. package/dist/ResponsivePopover.js +3 -2
  21. package/dist/SegmentedButton.js +85 -53
  22. package/dist/SegmentedButtonItem.js +112 -0
  23. package/dist/Toast.js +11 -0
  24. package/dist/TreeListItem.js +2 -12
  25. package/dist/api.json +1 -1
  26. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  27. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  28. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  29. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  30. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  31. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  32. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  33. package/dist/generated/i18n/i18n-defaults.js +2 -2
  34. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +3 -1
  35. package/dist/generated/templates/CalendarTemplate.lit.js +1 -1
  36. package/dist/generated/templates/CardTemplate.lit.js +1 -1
  37. package/dist/generated/templates/CustomListItemTemplate.lit.js +3 -3
  38. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  39. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +1 -1
  40. package/dist/generated/templates/DayPickerTemplate.lit.js +7 -6
  41. package/dist/generated/templates/FileUploaderTemplate.lit.js +1 -1
  42. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +1 -1
  43. package/dist/generated/templates/ListItemTemplate.lit.js +3 -3
  44. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  45. package/dist/generated/templates/RadioButtonTemplate.lit.js +1 -1
  46. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +15 -0
  47. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +1 -1
  48. package/dist/generated/templates/StandardListItemTemplate.lit.js +3 -3
  49. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +3 -3
  50. package/dist/generated/templates/ToastTemplate.lit.js +2 -1
  51. package/dist/generated/templates/TreeListItemTemplate.lit.js +3 -3
  52. package/dist/generated/templates/TreeTemplate.lit.js +1 -1
  53. package/dist/generated/themes/Badge.css.js +1 -1
  54. package/dist/generated/themes/Button.css.js +1 -1
  55. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  56. package/dist/generated/themes/Card.css.js +1 -1
  57. package/dist/generated/themes/CheckBox.css.js +1 -1
  58. package/dist/generated/themes/ComboBox.css.js +1 -1
  59. package/dist/generated/themes/DatePicker.css.js +1 -1
  60. package/dist/generated/themes/DayPicker.css.js +1 -1
  61. package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
  62. package/dist/generated/themes/Input.css.js +1 -1
  63. package/dist/generated/themes/InvisibleTextStyles.css.js +1 -1
  64. package/dist/generated/themes/Label.css.js +1 -1
  65. package/dist/generated/themes/Link.css.js +1 -1
  66. package/dist/generated/themes/ListItem.css.js +1 -1
  67. package/dist/generated/themes/MessageStrip.css.js +1 -1
  68. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  69. package/dist/generated/themes/Panel.css.js +1 -1
  70. package/dist/generated/themes/RadioButton.css.js +1 -1
  71. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  72. package/dist/generated/themes/Select.css.js +1 -1
  73. package/dist/generated/themes/SliderBase.css.js +1 -1
  74. package/dist/generated/themes/StepInput.css.js +1 -1
  75. package/dist/generated/themes/Switch.css.js +1 -1
  76. package/dist/generated/themes/TextArea.css.js +1 -1
  77. package/dist/generated/themes/Tokenizer.css.js +1 -1
  78. package/dist/generated/themes/Tree.css.js +1 -1
  79. package/dist/generated/themes/TreeListItem.css.js +1 -1
  80. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  81. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  82. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  83. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  84. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  85. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  86. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  87. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  88. package/dist/i18n/messagebundle.properties +13 -1
  89. package/dist/popup-utils/OpenedPopupsRegistry.js +1 -1
  90. package/package.json +7 -7
  91. package/src/Avatar.js +8 -6
  92. package/src/Calendar.hbs +2 -0
  93. package/src/CalendarHeader.hbs +11 -4
  94. package/src/CalendarHeader.js +75 -1
  95. package/src/Card.hbs +1 -1
  96. package/src/Card.js +19 -2
  97. package/src/ComboBox.js +10 -0
  98. package/src/DateComponentBase.js +12 -0
  99. package/src/DatePicker.js +48 -9
  100. package/src/DatePickerPopover.hbs +1 -0
  101. package/src/DateTimePickerPopover.hbs +4 -4
  102. package/src/DayPicker.hbs +6 -1
  103. package/src/DayPicker.js +21 -2
  104. package/src/FileUploader.hbs +1 -0
  105. package/src/FileUploader.js +8 -0
  106. package/src/GroupHeaderListItem.hbs +3 -3
  107. package/src/GroupHeaderListItem.js +4 -0
  108. package/src/Icon.js +6 -6
  109. package/src/Input.js +10 -2
  110. package/src/Label.js +1 -1
  111. package/src/List.hbs +1 -2
  112. package/src/List.js +8 -5
  113. package/src/ListItem.hbs +3 -1
  114. package/src/ListItem.js +25 -4
  115. package/src/Panel.js +17 -5
  116. package/src/Popup.js +16 -5
  117. package/src/RadioButton.hbs +1 -1
  118. package/src/RadioButton.js +15 -2
  119. package/src/ResponsivePopover.js +3 -2
  120. package/src/SegmentedButton.hbs +12 -5
  121. package/src/SegmentedButton.js +85 -53
  122. package/src/SegmentedButtonItem.hbs +42 -0
  123. package/src/SegmentedButtonItem.js +112 -0
  124. package/src/Toast.hbs +13 -11
  125. package/src/Toast.js +11 -0
  126. package/src/Tree.hbs +1 -1
  127. package/src/TreeListItem.js +2 -12
  128. package/src/i18n/messagebundle.properties +13 -1
  129. package/src/popup-utils/OpenedPopupsRegistry.js +1 -1
@@ -1,10 +1,17 @@
1
- <div
1
+ <ul
2
2
  @click="{{_onclick}}"
3
+ @keydown="{{_onkeydown}}"
4
+ @keyup="{{_onkeyup}}"
3
5
  @focusin="{{_onfocusin}}"
4
- class="ui5-segmentedbutton-root"
5
- role="group"
6
+ class="ui5-segmented-button-root"
7
+ role="listbox"
6
8
  dir="{{effectiveDir}}"
7
- aria-roledescription="{{ariaDescription}}"
9
+ aria-multiselectable="true"
10
+ aria-describedby="{{_id}}-invisibleText"
11
+ aria-roledescription={{ariaDescription}}
8
12
  >
9
13
  <slot></slot>
10
- </div>
14
+
15
+ <span id="{{_id}}-invisibleText" class="ui5-hidden-text">{{ariaDescribedBy}}</span>
16
+
17
+ </ul>
@@ -5,8 +5,9 @@ import { fetchI18nBundle, getI18nBundle } from "@ui5/webcomponents-base/dist/i18
5
5
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
6
6
  import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
7
7
  import { isIE } from "@ui5/webcomponents-base/dist/Device.js";
8
- import { SEGMENTEDBUTTON_ARIA_DESCRIPTION } from "./generated/i18n/i18n-defaults.js";
9
- import ToggleButton from "./ToggleButton.js";
8
+ import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
9
+ import { SEGMENTEDBUTTON_ARIA_DESCRIPTION, SEGMENTEDBUTTON_ARIA_DESCRIBEDBY } from "./generated/i18n/i18n-defaults.js";
10
+ import SegmentedButtonItem from "./SegmentedButtonItem.js";
10
11
 
11
12
  // Template
12
13
  import SegmentedButtonTemplate from "./generated/templates/SegmentedButtonTemplate.lit.js";
@@ -18,39 +19,40 @@ import SegmentedButtonCss from "./generated/themes/SegmentedButton.css.js";
18
19
  * @public
19
20
  */
20
21
  const metadata = {
21
- tag: "ui5-segmentedbutton",
22
+ tag: "ui5-segmented-button",
23
+ altTag: "ui5-segmentedbutton",
22
24
  languageAware: true,
23
25
  properties: /** @lends sap.ui.webcomponents.main.SegmentedButton.prototype */ {},
24
26
  managedSlots: true,
25
27
  slots: /** @lends sap.ui.webcomponents.main.SegmentedButton.prototype */ {
26
28
 
27
29
  /**
28
- * Defines the buttons of <code>ui5-segmentedbutton</code>.
30
+ * Defines the items of <code>ui5-segmented-button</code>.
29
31
  * <br><br>
30
- * <b>Note:</b> Multiple buttons are allowed.
32
+ * <b>Note:</b> Multiple items are allowed.
31
33
  * <br><br>
32
- * <b>Note:</b> Use the <code>ui5-togglebutton</code> for the intended design.
33
- * @type {HTMLElement[]}
34
- * @slot
34
+ * <b>Note:</b> Use the <code>ui5-segmented-button-item</code> for the intended design.
35
+ * @type {sap.ui.webcomponents.main.IButton[]}
36
+ * @slot items
35
37
  * @public
36
38
  */
37
39
  "default": {
38
- propertyName: "buttons",
40
+ propertyName: "items",
39
41
  type: HTMLElement,
40
42
  },
41
43
  },
42
44
  events: /** @lends sap.ui.webcomponents.main.SegmentedButton.prototype */ {
43
45
 
44
46
  /**
45
- * Fired when the selected button changes.
47
+ * Fired when the selected item changes.
46
48
  *
47
49
  * @event sap.ui.webcomponents.main.SegmentedButton#selection-change
48
- * @param {HTMLElement} selectedButton the pressed button.
50
+ * @param {HTMLElement} selectedItem the pressed item.
49
51
  * @public
50
52
  */
51
53
  "selection-change": {
52
54
  detail: {
53
- selectedButton: { type: HTMLElement },
55
+ selectedItem: { type: HTMLElement },
54
56
  },
55
57
  },
56
58
  },
@@ -61,11 +63,11 @@ const metadata = {
61
63
  *
62
64
  * <h3 class="comment-api-title">Overview</h3>
63
65
  *
64
- * The <code>ui5-segmentedbutton</code> shows a group of buttons. When the user clicks or taps
65
- * one of the buttons, it stays in a pressed state. It automatically resizes the buttons
66
+ * The <code>ui5-segmented-button</code> shows a group of items. When the user clicks or taps
67
+ * one of the items, it stays in a pressed state. It automatically resizes the items
66
68
  * to fit proportionally within the component. When no width is set, the component uses the available width.
67
69
  * <br><br>
68
- * <b>Note:</b> There can be just one selected <code>button</code> at a time.
70
+ * <b>Note:</b> There can be just one selected <code>item</code> at a time.
69
71
  *
70
72
  * <h3>ES6 Module Import</h3>
71
73
  *
@@ -75,8 +77,9 @@ const metadata = {
75
77
  * @author SAP SE
76
78
  * @alias sap.ui.webcomponents.main.SegmentedButton
77
79
  * @extends sap.ui.webcomponents.base.UI5Element
78
- * @tagname ui5-segmentedbutton
80
+ * @tagname ui5-segmented-button
79
81
  * @since 1.0.0-rc.6
82
+ * @appenddocs SegmentedButtonItem
80
83
  * @public
81
84
  */
82
85
  class SegmentedButton extends UI5Element {
@@ -97,7 +100,7 @@ class SegmentedButton extends UI5Element {
97
100
  }
98
101
 
99
102
  static get dependencies() {
100
- return [ToggleButton];
103
+ return [SegmentedButtonItem];
101
104
  }
102
105
 
103
106
  static async onDefine() {
@@ -108,7 +111,7 @@ class SegmentedButton extends UI5Element {
108
111
  super();
109
112
 
110
113
  this._itemNavigation = new ItemNavigation(this, {
111
- getItemsCallback: () => this.getSlottedNodes("buttons"),
114
+ getItemsCallback: () => this.getSlottedNodes("items"),
112
115
  });
113
116
 
114
117
  this.absoluteWidthSet = false; // set to true whenever we set absolute width to the component
@@ -128,6 +131,13 @@ class SegmentedButton extends UI5Element {
128
131
  }
129
132
 
130
133
  onBeforeRendering() {
134
+ const items = this.getSlottedNodes("items");
135
+
136
+ items.forEach((item, index, arr) => {
137
+ item.posInSet = index + 1;
138
+ item.sizeOfSet = arr.length;
139
+ });
140
+
131
141
  this.normalizeSelection();
132
142
  }
133
143
 
@@ -135,24 +145,24 @@ class SegmentedButton extends UI5Element {
135
145
  await this._doLayout();
136
146
  }
137
147
 
138
- prepareToMeasureButtons() {
148
+ prepareToMeasureItems() {
139
149
  this.style.width = "";
140
- this.buttons.forEach(button => {
141
- button.style.width = "";
150
+ this.items.forEach(item => {
151
+ item.style.width = "";
142
152
  });
143
153
  }
144
154
 
145
- async measureButtonsWidth() {
155
+ async measureItemsWidth() {
146
156
  await renderFinished();
147
- this.prepareToMeasureButtons();
157
+ this.prepareToMeasureItems();
148
158
 
149
- this.widths = this.buttons.map(button => {
159
+ this.widths = this.items.map(item => {
150
160
  // +1 is added because for width 100.44px the offsetWidth property returns 100px and not 101px
151
- let width = button.offsetWidth + 1;
161
+ let width = item.offsetWidth + 1;
152
162
 
153
163
  if (isIE()) {
154
- // in IE we are adding 1 one px beacause the width of the border on a button in the middle is not calculated and if the
155
- // longest button is in the middle, it truncates
164
+ // in IE we are adding 1 one px beacause the width of the border on an item in the middle is not calculated and if the
165
+ // longest item is in the middle, it truncates
156
166
  width += 1;
157
167
  }
158
168
 
@@ -161,37 +171,55 @@ class SegmentedButton extends UI5Element {
161
171
  }
162
172
 
163
173
  normalizeSelection() {
164
- this._selectedButton = this.buttons.filter(button => button.pressed).pop();
174
+ this._selectedItem = this.items.filter(item => item.pressed).pop();
165
175
 
166
- if (this._selectedButton) {
167
- this.buttons.forEach(button => {
168
- button.pressed = false;
176
+ if (this._selectedItem) {
177
+ this.items.forEach(item => {
178
+ item.pressed = false;
169
179
  });
170
- this._selectedButton.pressed = true;
180
+ this._selectedItem.pressed = true;
171
181
  }
172
182
  }
173
183
 
174
- _onclick(event) {
184
+ _selectItem(event) {
175
185
  if (event.target.disabled || event.target === this.getDomRef()) {
176
186
  return;
177
187
  }
178
188
 
179
- if (event.target !== this._selectedButton) {
180
- if (this._selectedButton) {
181
- this._selectedButton.pressed = false;
189
+ if (event.target !== this._selectedItem) {
190
+ if (this._selectedItem) {
191
+ this._selectedItem.pressed = false;
182
192
  }
183
- this._selectedButton = event.target;
193
+ this._selectedItem = event.target;
184
194
  this.fireEvent("selection-change", {
185
- selectedButton: this._selectedButton,
195
+ selectedItem: this._selectedItem,
186
196
  });
187
197
  }
188
198
 
189
- this._selectedButton.pressed = true;
190
- this._itemNavigation.setCurrentItem(this._selectedButton);
199
+ this._selectedItem.pressed = true;
200
+ this._itemNavigation.setCurrentItem(this._selectedItem);
191
201
 
192
202
  return this;
193
203
  }
194
204
 
205
+ _onclick(event) {
206
+ this._selectItem(event);
207
+ }
208
+
209
+ _onkeydown(event) {
210
+ if (isEnter(event)) {
211
+ this._selectItem(event);
212
+ } else if (isSpace(event)) {
213
+ event.preventDefault();
214
+ }
215
+ }
216
+
217
+ _onkeyup(event) {
218
+ if (isSpace(event)) {
219
+ this._selectItem(event);
220
+ }
221
+ }
222
+
195
223
  _onfocusin(event) {
196
224
  // If the component was previously focused,
197
225
  // update the ItemNavigation to sync butons` tabindex values
@@ -202,28 +230,28 @@ class SegmentedButton extends UI5Element {
202
230
 
203
231
  // If the component is focused for the first time
204
232
  // focus the selected item if such present
205
- if (this.selectedButton) {
206
- this.selectedButton.focus();
207
- this._itemNavigation.setCurrentItem(this._selectedButton);
233
+ if (this.selectedItem) {
234
+ this.selectedItem.focus();
235
+ this._itemNavigation.setCurrentItem(this._selectedItem);
208
236
  this.hasPreviouslyFocusedItem = true;
209
237
  }
210
238
  }
211
239
 
212
240
  async _doLayout() {
213
- const buttonsHaveWidth = this.widths && this.widths.some(button => button.offsetWidth > 2); // 2 are the pixel's added for rounding & IE
214
- if (!buttonsHaveWidth) {
215
- await this.measureButtonsWidth();
241
+ const itemsHaveWidth = this.widths && this.widths.some(item => item.offsetWidth > 2); // 2 are the pixel's added for rounding & IE
242
+ if (!itemsHaveWidth) {
243
+ await this.measureItemsWidth();
216
244
  }
217
245
 
218
246
  const parentWidth = this.parentNode.offsetWidth;
219
247
 
220
248
  if (!this.style.width || this.percentageWidthSet) {
221
- this.style.width = `${Math.max(...this.widths) * this.buttons.length}px`;
249
+ this.style.width = `${Math.max(...this.widths) * this.items.length}px`;
222
250
  this.absoluteWidthSet = true;
223
251
  }
224
252
 
225
- this.buttons.forEach(button => {
226
- button.style.width = "100%";
253
+ this.items.forEach(item => {
254
+ item.style.width = "100%";
227
255
  });
228
256
 
229
257
  if (parentWidth <= this.offsetWidth && this.absoluteWidthSet) {
@@ -233,14 +261,18 @@ class SegmentedButton extends UI5Element {
233
261
  }
234
262
 
235
263
  /**
236
- * Currently selected button.
264
+ * Currently selected item.
237
265
  *
238
266
  * @readonly
239
- * @type { ui5-togglebutton }
267
+ * @type { ui5-segmented-button-item }
240
268
  * @public
241
269
  */
242
- get selectedButton() {
243
- return this._selectedButton;
270
+ get selectedItem() {
271
+ return this._selectedItem;
272
+ }
273
+
274
+ get ariaDescribedBy() {
275
+ return this.i18nBundle.getText(SEGMENTEDBUTTON_ARIA_DESCRIBEDBY);
244
276
  }
245
277
 
246
278
  get ariaDescription() {
@@ -0,0 +1,42 @@
1
+ <li
2
+ role="option"
3
+ aria-roledescription="{{ariaDescription}}"
4
+ aria-posinset="{{posInSet}}"
5
+ aria-setsize="{{sizeOfSet}}"
6
+ aria-selected="{{pressed}}"
7
+ class="ui5-button-root"
8
+ aria-disabled="{{disabled}}"
9
+ data-sap-focus-ref
10
+ {{> ariaPressed}}
11
+ dir="{{effectiveDir}}"
12
+ @focusout={{_onfocusout}}
13
+ @focusin={{_onfocusin}}
14
+ @click={{_onclick}}
15
+ @mousedown={{_onmousedown}}
16
+ @mouseup={{_onmouseup}}
17
+ @keydown={{_onkeydown}}
18
+ @keyup={{_onkeyup}}
19
+ @touchstart="{{_ontouchstart}}"
20
+ @touchend="{{_ontouchend}}"
21
+ tabindex={{tabIndexValue}}
22
+ aria-label="{{ariaLabelText}}"
23
+ title="{{accInfo.title}}"
24
+ >
25
+ {{#if icon}}
26
+ <ui5-icon
27
+ class="ui5-button-icon"
28
+ name="{{icon}}"
29
+ part="icon"
30
+ ?show-tooltip={{showIconTooltip}}
31
+ ></ui5-icon>
32
+ {{/if}}
33
+
34
+ <span id="{{_id}}-content" class="ui5-button-text">
35
+ <bdi>
36
+ <slot></slot>
37
+ </bdi>
38
+ </span>
39
+
40
+ </li>
41
+
42
+ {{#*inline "ariaPressed"}}{{/inline}}
@@ -0,0 +1,112 @@
1
+ import SegmentedButtonItemTemplate from "./generated/templates/SegmentedButtonItemTemplate.lit.js";
2
+ import ToggleButton from "./ToggleButton.js";
3
+ import ButtonDesign from "./types/ButtonDesign.js";
4
+
5
+ import { SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION } from "./generated/i18n/i18n-defaults.js";
6
+
7
+ /**
8
+ * @public
9
+ */
10
+ const metadata = {
11
+ tag: "ui5-segmented-button-item",
12
+ properties: /** @lends sap.ui.webcomponents.main.SegmentedButtonItem.prototype */ {
13
+ /**
14
+ * <b>Note:</b> The property is inherited and not supported. If set, it won't take any effect.
15
+ *
16
+ * @public
17
+ */
18
+ design: {
19
+ type: ButtonDesign,
20
+ defaultValue: ButtonDesign.Default,
21
+ },
22
+
23
+ /**
24
+ * <b>Note:</b> The property is inherited and not supported. If set, it won't take any effect.
25
+ *
26
+ * @public
27
+ */
28
+ iconEnd: {
29
+ type: Boolean,
30
+ },
31
+
32
+ /**
33
+ * <b>Note:</b> The property is inherited and not supported. If set, it won't take any effect.
34
+ *
35
+ * @public
36
+ */
37
+ iconSize: {
38
+ type: String,
39
+ defaultValue: undefined,
40
+ },
41
+
42
+ /**
43
+ * <b>Note:</b> The property is inherited and not supported. If set, it won't take any effect.
44
+ *
45
+ * @public
46
+ */
47
+ submits: {
48
+ type: Boolean,
49
+ },
50
+
51
+ /**
52
+ * Defines the index of the item inside of the SegmentedButton.
53
+ *
54
+ * @private
55
+ * @type {String}
56
+ */
57
+ posInSet: {
58
+ type: String,
59
+ },
60
+
61
+ /**
62
+ * Defines how many items are inside of the SegmentedButton.
63
+ *
64
+ * @private
65
+ * @type {String}
66
+ */
67
+ sizeOfSet: {
68
+ type: String,
69
+ },
70
+ },
71
+ };
72
+
73
+ /**
74
+ * @class
75
+ *
76
+ *<h3 class="comment-api-title">Overview</h3>
77
+ *
78
+ * Users can use the <code>ui5-segmented-button-item</code> as part of a <code>ui5-segmented-button</code>.
79
+ * <br><br>
80
+ * Clicking or tapping on a <code>ui5-segmented-button-item</code> changes its state to <code>pressed</code>.
81
+ * The item returns to its initial state when the user clicks or taps on it again.
82
+ * By applying additional custom CSS-styling classes, apps can give a different style to any
83
+ * <code>ui5-segmented-button-item</code>.
84
+ *
85
+ * <h3>ES6 Module Import</h3>
86
+ *
87
+ * <code>import "@ui5/webcomponents/dist/SegmentedButtonItem";</code>
88
+ *
89
+ * @constructor
90
+ * @author SAP SE
91
+ * @alias sap.ui.webcomponents.main.SegmentedButtonItem
92
+ * @extends ToggleButton
93
+ * @tagname ui5-segmented-button-item
94
+ * @public
95
+ */
96
+ class SegmentedButtonItem extends ToggleButton {
97
+ static get metadata() {
98
+ return metadata;
99
+ }
100
+
101
+ static get template() {
102
+ return SegmentedButtonItemTemplate;
103
+ }
104
+
105
+ get ariaDescription() {
106
+ return this.i18nBundle.getText(SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION);
107
+ }
108
+ }
109
+
110
+ SegmentedButtonItem.define();
111
+
112
+ export default SegmentedButtonItem;
package/src/Toast.hbs CHANGED
@@ -1,11 +1,13 @@
1
- <div class="ui5-toast-root"
2
- role="alert"
3
- style="{{styles.root}}"
4
- dir="{{effectiveDir}}"
5
- @mouseover="{{_onmouseover}}"
6
- @mouseleave="{{_onmouseleave}}"
7
- @transitionend="{{_ontransitionend}}">
8
- <bdi>
9
- <slot></slot>
10
- </bdi>
11
- </div>
1
+ {{#if domRendered}}
2
+ <div class="ui5-toast-root"
3
+ role="alert"
4
+ style="{{styles.root}}"
5
+ dir="{{effectiveDir}}"
6
+ @mouseover="{{_onmouseover}}"
7
+ @mouseleave="{{_onmouseleave}}"
8
+ @transitionend="{{_ontransitionend}}">
9
+ <bdi>
10
+ <slot></slot>
11
+ </bdi>
12
+ </div>
13
+ {{/if}}
package/src/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
 
package/src/Tree.hbs CHANGED
@@ -3,7 +3,7 @@
3
3
  .headerText="{{headerText}}"
4
4
  .footerText="{{footerText}}"
5
5
  .noDataText="{{noDataText}}"
6
- .accRole="{{_role}}"
6
+ .accessibleRole="{{_role}}"
7
7
  @ui5-item-click="{{_onListItemClick}}"
8
8
  @ui5-item-delete="{{_onListItemDelete}}"
9
9
  @ui5-selection-change="{{_onListSelectionChange}}"
@@ -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
  }
@@ -94,9 +94,15 @@ LIST_ITEM_POSITION=List item {0} of {1}
94
94
  #XACT: ARIA announcement for the list item selection.
95
95
  LIST_ITEM_SELECTED=Selected
96
96
 
97
+ #XACT: ARIA announcement for the list item selected=false state
98
+ LIST_ITEM_NOT_SELECTED=Not Selected
99
+
97
100
  #XBUT: List Multi Selection Mode Checkbox aria-label text
98
101
  ARIA_LABEL_LIST_ITEM_CHECKBOX = Multiple Selection mode.
99
102
 
103
+ #XBUT: List Single Selection Mode RadioButton aria-label text
104
+ ARIA_LABEL_LIST_ITEM_RADIO_BUTTON=Item Selection.
105
+
100
106
  #XTOL: Tooltip of messgae strip close button
101
107
  MESSAGE_STRIP_CLOSE_BUTTON=Message Strip Close
102
108
 
@@ -131,7 +137,13 @@ RATING_INDICATOR_TEXT=Rating Indicator
131
137
  RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Decline
132
138
 
133
139
  #XACT: ARIA description for the segmented button
134
- SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmented button
140
+ SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmented button group
141
+
142
+ #XACT: ARIA described by for the segmented button
143
+ SEGMENTEDBUTTON_ARIA_DESCRIBEDBY=Press SPACE or ENTER to select an item
144
+
145
+ #XACT: ARIA description for the segmented button item
146
+ SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION=Segmented button
135
147
 
136
148
  #XACT: ARIA description for slider handle
137
149
  SLIDER_ARIA_DESCRIPTION=Slider handle
@@ -35,7 +35,7 @@ const _keydownListener = event => {
35
35
  }
36
36
 
37
37
  if (isEscape(event)) {
38
- openedRegistry.pop().instance.close(true);
38
+ openedRegistry[openedRegistry.length - 1].instance.close(true);
39
39
  }
40
40
  };
41
41