@ui5/webcomponents 2.20.0-rc.3 → 2.21.0-rc.0
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.
- package/CHANGELOG.md +47 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/Breadcrumbs.d.ts +3 -3
- package/dist/Breadcrumbs.js +1 -1
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Button.d.ts +6 -0
- package/dist/Button.js +11 -2
- package/dist/Button.js.map +1 -1
- package/dist/Carousel.d.ts +14 -13
- package/dist/Carousel.js +93 -177
- package/dist/Carousel.js.map +1 -1
- package/dist/CarouselTemplate.js +2 -2
- package/dist/CarouselTemplate.js.map +1 -1
- package/dist/ColorPaletteTemplate.js +1 -1
- package/dist/ColorPaletteTemplate.js.map +1 -1
- package/dist/DatePicker.js +2 -2
- package/dist/DatePicker.js.map +1 -1
- package/dist/DayPickerTemplate.js +1 -1
- package/dist/DayPickerTemplate.js.map +1 -1
- package/dist/Dialog.d.ts +0 -3
- package/dist/Dialog.js +3 -1
- package/dist/Dialog.js.map +1 -1
- package/dist/Icon.d.ts +1 -1
- package/dist/Icon.js +12 -4
- package/dist/Icon.js.map +1 -1
- package/dist/IconTemplate.js +1 -1
- package/dist/IconTemplate.js.map +1 -1
- package/dist/Input.d.ts +2 -1
- package/dist/Input.js +38 -16
- package/dist/Input.js.map +1 -1
- package/dist/Menu.js +6 -1
- package/dist/Menu.js.map +1 -1
- package/dist/MenuItem.d.ts +8 -0
- package/dist/MenuItem.js +29 -1
- package/dist/MenuItem.js.map +1 -1
- package/dist/MenuItemTemplate.js +2 -2
- package/dist/MenuItemTemplate.js.map +1 -1
- package/dist/MultiComboBox.js +5 -0
- package/dist/MultiComboBox.js.map +1 -1
- package/dist/MultiInput.js +4 -5
- package/dist/MultiInput.js.map +1 -1
- package/dist/StepInput.d.ts +5 -0
- package/dist/StepInput.js +26 -5
- package/dist/StepInput.js.map +1 -1
- package/dist/Switch.d.ts +8 -4
- package/dist/Switch.js +15 -11
- package/dist/Switch.js.map +1 -1
- package/dist/SwitchTemplate.js +1 -1
- package/dist/SwitchTemplate.js.map +1 -1
- package/dist/TimePicker.d.ts +55 -3
- package/dist/TimePicker.js +160 -26
- package/dist/TimePicker.js.map +1 -1
- package/dist/TimePickerTemplate.js +1 -1
- package/dist/TimePickerTemplate.js.map +1 -1
- package/dist/TimeSelectionClocks.js +8 -0
- package/dist/TimeSelectionClocks.js.map +1 -1
- package/dist/Token.js +2 -2
- package/dist/Token.js.map +1 -1
- package/dist/Tokenizer.js +2 -1
- package/dist/Tokenizer.js.map +1 -1
- package/dist/Toolbar.d.ts +11 -11
- package/dist/Toolbar.js +3 -3
- package/dist/Toolbar.js.map +1 -1
- package/dist/ToolbarButton.d.ts +22 -3
- package/dist/ToolbarButton.js +23 -3
- package/dist/ToolbarButton.js.map +1 -1
- package/dist/ToolbarItem.d.ts +18 -77
- package/dist/ToolbarItem.js +9 -110
- package/dist/ToolbarItem.js.map +1 -1
- package/dist/ToolbarItemBase.d.ts +69 -0
- package/dist/ToolbarItemBase.js +142 -0
- package/dist/ToolbarItemBase.js.map +1 -0
- package/dist/ToolbarSelect.d.ts +6 -5
- package/dist/ToolbarSelect.js +3 -3
- package/dist/ToolbarSelect.js.map +1 -1
- package/dist/ToolbarSeparator.d.ts +3 -3
- package/dist/ToolbarSeparator.js +3 -3
- package/dist/ToolbarSeparator.js.map +1 -1
- package/dist/ToolbarSpacer.d.ts +3 -3
- package/dist/ToolbarSpacer.js +3 -3
- package/dist/ToolbarSpacer.js.map +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/ColorPaletteItem.css +1 -1
- package/dist/css/themes/DatePickerPopover.css +1 -1
- package/dist/css/themes/MenuItem.css +1 -1
- package/dist/css/themes/PopupsCommon.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +179 -183
- package/dist/custom-elements.json +159 -112
- package/dist/features/InputSuggestions.js +2 -1
- package/dist/features/InputSuggestions.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +7 -2
- package/dist/generated/i18n/i18n-defaults.js +7 -2
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
- package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
- package/dist/generated/themes/MenuItem.css.d.ts +1 -1
- package/dist/generated/themes/MenuItem.css.js +1 -1
- package/dist/generated/themes/MenuItem.css.js.map +1 -1
- package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
- package/dist/generated/themes/PopupsCommon.css.js +1 -1
- package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +39 -8
- package/dist/web-types.json +39 -74
- package/package.json +9 -9
- package/src/CarouselTemplate.tsx +3 -3
- package/src/ColorPaletteTemplate.tsx +2 -2
- package/src/DayPickerTemplate.tsx +1 -1
- package/src/IconTemplate.tsx +1 -0
- package/src/MenuItemTemplate.tsx +11 -1
- package/src/SwitchTemplate.tsx +2 -2
- package/src/TimePickerTemplate.tsx +1 -1
- package/src/i18n/messagebundle.properties +17 -2
- package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
- package/src/themes/Breadcrumbs.css +6 -2
- package/src/themes/ColorPaletteItem.css +14 -0
- package/src/themes/DatePickerPopover.css +5 -0
- package/src/themes/MenuItem.css +5 -0
- package/src/themes/PopupsCommon.css +7 -0
- package/src/themes/base/Bar-parameters.css +1 -0
- package/src/themes/base/Breadcrumbs-parameters.css +4 -0
- package/src/themes/sap_fiori_3/parameters-bundle.css +2 -1
- package/src/themes/sap_fiori_3_dark/parameters-bundle.css +2 -1
- package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +2 -1
- package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +2 -1
- package/src/themes/sap_horizon/Breadcrumbs-parameters.css +5 -1
- package/src/themes/sap_horizon/CalendarHeader-parameters.css +3 -3
- package/src/themes/sap_horizon/DayPicker-parameters.css +3 -3
- package/src/themes/sap_horizon_dark/Breadcrumbs-parameters.css +5 -1
- package/src/themes/sap_horizon_dark/CalendarHeader-parameters.css +2 -2
- package/src/themes/sap_horizon_hcb/Breadcrumbs-parameters.css +6 -0
- package/src/themes/sap_horizon_hcb/parameters-bundle.css +2 -1
- package/src/themes/sap_horizon_hcw/Breadcrumbs-parameters.css +6 -0
- package/src/themes/sap_horizon_hcw/parameters-bundle.css +2 -1
package/dist/Carousel.js
CHANGED
|
@@ -186,13 +186,12 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
186
186
|
*/
|
|
187
187
|
this._visibleItemsCount = 0;
|
|
188
188
|
/**
|
|
189
|
-
* Defines the current
|
|
189
|
+
* Defines the current page index, which determines the first visible item.
|
|
190
190
|
* @private
|
|
191
191
|
* @since 2.16.0-r.c1
|
|
192
192
|
*/
|
|
193
|
-
this.
|
|
193
|
+
this._currentPageIndex = 0;
|
|
194
194
|
this._pageStep = 10;
|
|
195
|
-
this._itemIndicator = 0;
|
|
196
195
|
this._observableContent = [];
|
|
197
196
|
this._contentItemsObserver = new MutationObserver(() => {
|
|
198
197
|
const visibleItemsCount = this._visibleItems.length;
|
|
@@ -200,9 +199,9 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
200
199
|
return;
|
|
201
200
|
}
|
|
202
201
|
this._visibleItemsCount = visibleItemsCount;
|
|
203
|
-
this.
|
|
204
|
-
this._focusedItemIndex = clamp(this._focusedItemIndex, this.
|
|
205
|
-
this.
|
|
202
|
+
this._currentPageIndex = clamp(this._currentPageIndex, 0, Math.max(0, this.items.length - this.effectiveItemsPerPage));
|
|
203
|
+
this._focusedItemIndex = clamp(this._focusedItemIndex, this._currentPageIndex, this.items.length - 1);
|
|
204
|
+
this._changePageIndex(this._currentPageIndex, { fireEvent: false });
|
|
206
205
|
});
|
|
207
206
|
this._scrollEnablement = new ScrollEnablement(this);
|
|
208
207
|
this._scrollEnablement.attachEvent("touchend", e => {
|
|
@@ -211,7 +210,7 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
211
210
|
this._onResizeBound = this._onResize.bind(this);
|
|
212
211
|
this._resizing = false; // indicates if the carousel is in process of resizing
|
|
213
212
|
this._lastFocusedElements = [];
|
|
214
|
-
this.
|
|
213
|
+
this._orderOfLastFocusedItems = [];
|
|
215
214
|
this._visibleItemsIndexes = [];
|
|
216
215
|
}
|
|
217
216
|
onBeforeRendering() {
|
|
@@ -219,7 +218,7 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
219
218
|
if (this.arrowsPlacement === CarouselArrowsPlacement.Navigation || !isDesktop()) {
|
|
220
219
|
this._visibleNavigationArrows = true;
|
|
221
220
|
}
|
|
222
|
-
this.
|
|
221
|
+
this.validateFocusedIndex();
|
|
223
222
|
}
|
|
224
223
|
onAfterRendering() {
|
|
225
224
|
this._scrollEnablement.scrollContainer = this.getDomRef();
|
|
@@ -236,7 +235,7 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
236
235
|
this._observableContent = [];
|
|
237
236
|
ResizeHandler.deregister(this, this._onResizeBound);
|
|
238
237
|
}
|
|
239
|
-
|
|
238
|
+
validateFocusedIndex() {
|
|
240
239
|
if (!this.isIndexInRange(this._focusedItemIndex)) {
|
|
241
240
|
this._focusedItemIndex = 0;
|
|
242
241
|
}
|
|
@@ -248,13 +247,13 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
248
247
|
// Change transitively effectiveItemsPerPage by modifying _width
|
|
249
248
|
this._width = this.offsetWidth;
|
|
250
249
|
this._itemWidth = Math.floor(this._width / this.effectiveItemsPerPage);
|
|
251
|
-
this._updateVisibleItems(this.
|
|
250
|
+
this._updateVisibleItems(this._currentPageIndex);
|
|
252
251
|
// Items per page did not change or the current,
|
|
253
252
|
// therefore page index does not need to be re-adjusted
|
|
254
253
|
if (this.effectiveItemsPerPage === previousItemsPerPage) {
|
|
255
254
|
return;
|
|
256
255
|
}
|
|
257
|
-
this._focusedItemIndex = clamp(this._focusedItemIndex, this.
|
|
256
|
+
this._focusedItemIndex = clamp(this._focusedItemIndex, this._currentPageIndex, this.items.length - this.effectiveItemsPerPage);
|
|
258
257
|
}
|
|
259
258
|
_updateScrolling(e) {
|
|
260
259
|
if (!e) {
|
|
@@ -298,25 +297,25 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
298
297
|
if (target === this.getDomRef()) {
|
|
299
298
|
return;
|
|
300
299
|
}
|
|
301
|
-
let
|
|
300
|
+
let itemIndex = -1;
|
|
302
301
|
for (let i = 0; i < this._visibleItems.length; i++) {
|
|
303
302
|
if (this._visibleItems[i].isEqualNode(target?.querySelector("slot")?.assignedNodes()[0])) {
|
|
304
|
-
|
|
303
|
+
itemIndex = i;
|
|
305
304
|
break;
|
|
306
305
|
}
|
|
307
306
|
}
|
|
308
|
-
if (
|
|
307
|
+
if (itemIndex === -1) {
|
|
309
308
|
return;
|
|
310
309
|
}
|
|
311
|
-
this._focusedItemIndex =
|
|
312
|
-
// Save reference of the last focused element for each
|
|
313
|
-
this._lastFocusedElements[
|
|
314
|
-
const
|
|
315
|
-
if (
|
|
316
|
-
this.
|
|
310
|
+
this._focusedItemIndex = itemIndex;
|
|
311
|
+
// Save reference of the last focused element for each item
|
|
312
|
+
this._lastFocusedElements[itemIndex] = target;
|
|
313
|
+
const sortedItemIndex = this._orderOfLastFocusedItems.indexOf(itemIndex);
|
|
314
|
+
if (sortedItemIndex === -1) {
|
|
315
|
+
this._orderOfLastFocusedItems.unshift(itemIndex);
|
|
317
316
|
}
|
|
318
317
|
else {
|
|
319
|
-
this.
|
|
318
|
+
this._orderOfLastFocusedItems.splice(0, 0, this._orderOfLastFocusedItems.splice(sortedItemIndex, 1)[0]);
|
|
320
319
|
}
|
|
321
320
|
}
|
|
322
321
|
_onmouseout() {
|
|
@@ -342,7 +341,7 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
342
341
|
}
|
|
343
342
|
}
|
|
344
343
|
async _handleF7Key(e) {
|
|
345
|
-
const lastFocusedElement = this._lastFocusedElements[this.
|
|
344
|
+
const lastFocusedElement = this._lastFocusedElements[this._getLastFocusedItemIndex];
|
|
346
345
|
if (!this._lastInnerFocusedElement) {
|
|
347
346
|
const firstFocusable = await getFirstFocusableElement(this.items[this._focusedItemIndex].item);
|
|
348
347
|
firstFocusable?.focus();
|
|
@@ -382,175 +381,86 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
382
381
|
}
|
|
383
382
|
async _handleHome(e) {
|
|
384
383
|
e.preventDefault();
|
|
385
|
-
this.
|
|
384
|
+
this._changePageIndex(0, { moveFocus: true });
|
|
386
385
|
await renderFinished();
|
|
387
386
|
this.focusItem();
|
|
388
387
|
}
|
|
389
388
|
async _handleEnd(e) {
|
|
390
389
|
e.preventDefault();
|
|
391
|
-
this.
|
|
390
|
+
this._changePageIndex(this.items.length - 1, { moveFocus: true });
|
|
392
391
|
await renderFinished();
|
|
393
392
|
this.focusItem();
|
|
394
393
|
}
|
|
395
394
|
async _handlePageUp(e) {
|
|
396
395
|
e.preventDefault();
|
|
397
|
-
this.
|
|
396
|
+
this._changePageIndex(this._currentPageIndex + this._pageStep, { moveFocus: true });
|
|
398
397
|
await renderFinished();
|
|
399
398
|
this.focusItem();
|
|
400
399
|
}
|
|
401
400
|
async _handlePageDown(e) {
|
|
402
401
|
e.preventDefault();
|
|
403
|
-
this.
|
|
402
|
+
this._changePageIndex(this._currentPageIndex - this._pageStep, { moveFocus: true });
|
|
404
403
|
await renderFinished();
|
|
405
404
|
this.focusItem();
|
|
406
405
|
}
|
|
407
406
|
get _backgroundDesign() {
|
|
408
407
|
return this.backgroundDesign.toLowerCase();
|
|
409
408
|
}
|
|
410
|
-
get
|
|
411
|
-
for (let i = 0; i < this.
|
|
412
|
-
const
|
|
413
|
-
if (this.
|
|
414
|
-
return
|
|
409
|
+
get _getLastFocusedItemIndex() {
|
|
410
|
+
for (let i = 0; i < this._orderOfLastFocusedItems.length; i++) {
|
|
411
|
+
const itemIndex = this._orderOfLastFocusedItems[i];
|
|
412
|
+
if (this.isItemVisible(itemIndex)) {
|
|
413
|
+
return itemIndex;
|
|
415
414
|
}
|
|
416
415
|
}
|
|
417
416
|
return this._focusedItemIndex;
|
|
418
417
|
}
|
|
419
418
|
async navigateLeft() {
|
|
420
|
-
this.
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
if (this.cyclic && this._visibleItemsIndexes.length >= 1) {
|
|
424
|
-
if (this._focusedItemIndex === 0 && this.effectiveItemsPerPage > 1) {
|
|
425
|
-
this._focusedItemIndex = 0;
|
|
426
|
-
}
|
|
427
|
-
else {
|
|
428
|
-
this._focusedItemIndex = this.items.length - 1;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
else {
|
|
433
|
-
--this._focusedItemIndex;
|
|
434
|
-
}
|
|
435
|
-
if (previousSelectedIndex !== this._focusedItemIndex) {
|
|
436
|
-
this.skipToItem(this._focusedItemIndex, -1);
|
|
437
|
-
await renderFinished();
|
|
438
|
-
this.focusItem();
|
|
439
|
-
this.fireDecoratorEvent("navigate", { selectedIndex: this._focusedItemIndex });
|
|
419
|
+
let newFocusedItemIndex = this._focusedItemIndex - 1;
|
|
420
|
+
if (this.cyclic && newFocusedItemIndex < 0) {
|
|
421
|
+
newFocusedItemIndex = this.items.length - 1;
|
|
440
422
|
}
|
|
423
|
+
this._changeFocusIndex(newFocusedItemIndex);
|
|
424
|
+
await renderFinished();
|
|
425
|
+
this.focusItem();
|
|
441
426
|
}
|
|
442
427
|
async navigateRight() {
|
|
443
|
-
this.
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
if (this.cyclic) {
|
|
447
|
-
if (this._focusedItemIndex === this.items.length - 1 && this.effectiveItemsPerPage > 1) {
|
|
448
|
-
this._focusedItemIndex = this.items.length - 1;
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
this._focusedItemIndex = 0;
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
else {
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
459
|
-
++this._focusedItemIndex;
|
|
460
|
-
}
|
|
461
|
-
if (previousSelectedIndex !== this._focusedItemIndex) {
|
|
462
|
-
this.skipToItem(this._focusedItemIndex, 1);
|
|
463
|
-
await renderFinished();
|
|
464
|
-
this.focusItem();
|
|
465
|
-
this.fireDecoratorEvent("navigate", { selectedIndex: this._focusedItemIndex });
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
navigateArrowRight() {
|
|
469
|
-
if (this._focusedItemIndex === this._visibleItemsIndexes[0]) {
|
|
470
|
-
this.navigateTo(this._focusedItemIndex + 1);
|
|
471
|
-
this.focusItem();
|
|
472
|
-
this._moveToItem(this._currentSlideIndex + 1);
|
|
473
|
-
}
|
|
474
|
-
else {
|
|
475
|
-
this._moveToItem(this._currentSlideIndex + 1);
|
|
476
|
-
this.navigateTo(this._focusedItemIndex);
|
|
477
|
-
this.focusItem();
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
navigateArrowLeft() {
|
|
481
|
-
if (this._focusedItemIndex > 0 && this._focusedItemIndex === this._visibleItemsIndexes[this._visibleItemsIndexes.length - 1]) {
|
|
482
|
-
this.navigateTo(this._focusedItemIndex - 1);
|
|
483
|
-
this.focusItem();
|
|
484
|
-
this._moveToItem(this._currentSlideIndex - 1);
|
|
485
|
-
}
|
|
486
|
-
else {
|
|
487
|
-
this._moveToItem(this._currentSlideIndex === 0 ? this.pagesCount - 1 : this._currentSlideIndex - 1);
|
|
488
|
-
this.navigateTo(this._focusedItemIndex === 0 ? this.items.length - 1 : this._focusedItemIndex);
|
|
489
|
-
this.focusItem();
|
|
428
|
+
let newFocusedItemIndex = this._focusedItemIndex + 1;
|
|
429
|
+
if (this.cyclic && newFocusedItemIndex > this.items.length - 1) {
|
|
430
|
+
newFocusedItemIndex = 0;
|
|
490
431
|
}
|
|
432
|
+
this._changeFocusIndex(newFocusedItemIndex);
|
|
433
|
+
await renderFinished();
|
|
434
|
+
this.focusItem();
|
|
491
435
|
}
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
const itemsPerPage = this.effectiveItemsPerPage;
|
|
497
|
-
let slideIndex;
|
|
498
|
-
if (itemsPerPage > 1) {
|
|
499
|
-
if (currentSlideIndex === 0 && itemStep < 0) {
|
|
500
|
-
return 0;
|
|
501
|
-
}
|
|
502
|
-
if (currentSlideIndex >= this.pagesCount && itemStep > 0) {
|
|
503
|
-
return this.pagesCount - 1;
|
|
504
|
-
}
|
|
505
|
-
slideIndex = currentSlideIndex + itemStep;
|
|
436
|
+
async navigateArrowRight() {
|
|
437
|
+
let newCurrentPageIndex = this._currentPageIndex + 1;
|
|
438
|
+
if (this.cyclic && newCurrentPageIndex > this.items.length - this.effectiveItemsPerPage) {
|
|
439
|
+
newCurrentPageIndex = 0;
|
|
506
440
|
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
if (currentSlideIndex === 0 && itemStep < 0) {
|
|
511
|
-
return this.pagesCount - 1;
|
|
512
|
-
}
|
|
513
|
-
if (currentSlideIndex === this.items.length - 1 && itemStep > 0) {
|
|
514
|
-
return 0;
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
return slideIndex;
|
|
441
|
+
this._changePageIndex(newCurrentPageIndex);
|
|
442
|
+
await renderFinished();
|
|
443
|
+
this.focusItem();
|
|
519
444
|
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
445
|
+
async navigateArrowLeft() {
|
|
446
|
+
let newCurrentPageIndex = this._currentPageIndex - 1;
|
|
447
|
+
if (this.cyclic && newCurrentPageIndex < 0) {
|
|
448
|
+
newCurrentPageIndex = this.items.length - 1;
|
|
523
449
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
}
|
|
528
|
-
if (slideIndex + itemsInViewportToShow > itemsCount - 1) {
|
|
529
|
-
slideIndex = itemsCount - itemsInViewportToShow;
|
|
530
|
-
}
|
|
531
|
-
this._updateVisibleItems(slideIndex);
|
|
532
|
-
this._currentSlideIndex = slideIndex;
|
|
450
|
+
this._changePageIndex(newCurrentPageIndex);
|
|
451
|
+
await renderFinished();
|
|
452
|
+
this.focusItem();
|
|
533
453
|
}
|
|
534
454
|
focusItem() {
|
|
535
455
|
this.carouselItemDomRef(this._focusedItemIndex)[0].focus({ preventScroll: true });
|
|
536
456
|
}
|
|
537
457
|
_navButtonClick(e) {
|
|
538
458
|
const target = e.target;
|
|
539
|
-
if (
|
|
540
|
-
|
|
541
|
-
this.navigateArrowRight();
|
|
542
|
-
}
|
|
543
|
-
else {
|
|
544
|
-
this.navigateArrowLeft();
|
|
545
|
-
}
|
|
459
|
+
if (target.hasAttribute("data-ui5-arrow-forward")) {
|
|
460
|
+
this.navigateArrowRight();
|
|
546
461
|
}
|
|
547
|
-
else
|
|
548
|
-
|
|
549
|
-
this.navigateRight();
|
|
550
|
-
}
|
|
551
|
-
else {
|
|
552
|
-
this.navigateLeft();
|
|
553
|
-
}
|
|
462
|
+
else {
|
|
463
|
+
this.navigateArrowLeft();
|
|
554
464
|
}
|
|
555
465
|
}
|
|
556
466
|
/**
|
|
@@ -560,29 +470,38 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
560
470
|
* @public
|
|
561
471
|
*/
|
|
562
472
|
navigateTo(itemIndex) {
|
|
563
|
-
|
|
473
|
+
this._changePageIndex(itemIndex, { fireEvent: false });
|
|
474
|
+
}
|
|
475
|
+
_changePageIndex(itemIndex, options = {}) {
|
|
476
|
+
const { fireEvent = true, moveFocus = false } = options;
|
|
477
|
+
const newPageIndex = clamp(itemIndex, 0, this.items.length - this.effectiveItemsPerPage);
|
|
478
|
+
if (moveFocus || (this._focusedItemIndex < newPageIndex || this._focusedItemIndex > newPageIndex + this.effectiveItemsPerPage - 1)) {
|
|
479
|
+
this._focusedItemIndex = clamp(itemIndex, 0, this.items.length - 1);
|
|
480
|
+
}
|
|
481
|
+
if (this._currentPageIndex === newPageIndex) {
|
|
564
482
|
return;
|
|
565
483
|
}
|
|
566
|
-
|
|
567
|
-
|
|
484
|
+
this._currentPageIndex = newPageIndex;
|
|
485
|
+
this._updateVisibleItems(newPageIndex);
|
|
486
|
+
if (fireEvent) {
|
|
487
|
+
this.fireDecoratorEvent("navigate", { selectedIndex: newPageIndex });
|
|
568
488
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
489
|
+
}
|
|
490
|
+
_changeFocusIndex(itemIndex) {
|
|
491
|
+
itemIndex = clamp(itemIndex, 0, this.items.length - 1);
|
|
492
|
+
let newPageIndex = this._currentPageIndex;
|
|
493
|
+
if (itemIndex < this._currentPageIndex) {
|
|
494
|
+
newPageIndex = itemIndex;
|
|
573
495
|
}
|
|
574
|
-
else {
|
|
575
|
-
this.
|
|
496
|
+
else if (itemIndex > this._currentPageIndex + this.effectiveItemsPerPage - 1) {
|
|
497
|
+
newPageIndex = itemIndex - this.effectiveItemsPerPage + 1;
|
|
576
498
|
}
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
if (focusIndex === 0) {
|
|
582
|
-
slideIndex = 0;
|
|
583
|
-
}
|
|
584
|
-
this._moveToItem(slideIndex);
|
|
499
|
+
if (this._currentPageIndex !== newPageIndex) {
|
|
500
|
+
this._currentPageIndex = newPageIndex;
|
|
501
|
+
this._updateVisibleItems(newPageIndex);
|
|
502
|
+
this.fireDecoratorEvent("navigate", { selectedIndex: newPageIndex });
|
|
585
503
|
}
|
|
504
|
+
this._focusedItemIndex = itemIndex;
|
|
586
505
|
}
|
|
587
506
|
/**
|
|
588
507
|
* The indices of the currently visible items of the component.
|
|
@@ -602,10 +521,10 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
602
521
|
return {
|
|
603
522
|
id: `${this._id}-carousel-item-${idx + 1}`,
|
|
604
523
|
item,
|
|
605
|
-
tabIndex: this.
|
|
524
|
+
tabIndex: this.isItemVisible(this._focusedItemIndex) ? 0 : -1,
|
|
606
525
|
posinset: idx + 1,
|
|
607
526
|
setsize: this._visibleItems.length,
|
|
608
|
-
visible: this.
|
|
527
|
+
visible: this.isItemVisible(idx),
|
|
609
528
|
};
|
|
610
529
|
});
|
|
611
530
|
}
|
|
@@ -640,7 +559,7 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
640
559
|
}
|
|
641
560
|
return itemsPerPageSizeXL;
|
|
642
561
|
}
|
|
643
|
-
|
|
562
|
+
isItemVisible(index) {
|
|
644
563
|
return this._visibleItemsIndexes.includes(index);
|
|
645
564
|
}
|
|
646
565
|
_updateVisibleItems(index) {
|
|
@@ -715,7 +634,7 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
715
634
|
const pages = this.pagesCount;
|
|
716
635
|
for (let index = 0; index < pages; index++) {
|
|
717
636
|
dots.push({
|
|
718
|
-
active: index === this.
|
|
637
|
+
active: index === this._currentPageIndex,
|
|
719
638
|
ariaLabel: Carousel_1.i18nBundle.getText(CAROUSEL_DOT_TEXT, index + 1, pages),
|
|
720
639
|
});
|
|
721
640
|
}
|
|
@@ -729,10 +648,10 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
729
648
|
};
|
|
730
649
|
}
|
|
731
650
|
get hasPrev() {
|
|
732
|
-
return this.cyclic || (this._focusedItemIndex - 1 >= 0 && this.
|
|
651
|
+
return this.cyclic || (this._focusedItemIndex - 1 >= 0 && this._currentPageIndex !== 0);
|
|
733
652
|
}
|
|
734
653
|
get hasNext() {
|
|
735
|
-
return this.cyclic || (this._focusedItemIndex + 1 <= this._visibleItems.length - 1 && this.
|
|
654
|
+
return this.cyclic || (this._focusedItemIndex + 1 <= this._visibleItems.length - 1 && this._currentPageIndex < this.pagesCount - 1);
|
|
736
655
|
}
|
|
737
656
|
get suppressAnimation() {
|
|
738
657
|
return this._resizing || getAnimationMode() === AnimationMode.None;
|
|
@@ -740,9 +659,6 @@ let Carousel = Carousel_1 = class Carousel extends UI5Element {
|
|
|
740
659
|
get _isRTL() {
|
|
741
660
|
return this.effectiveDir === "rtl";
|
|
742
661
|
}
|
|
743
|
-
get selectedIndexToShow() {
|
|
744
|
-
return this._isRTL ? this.items.length - (this.items.length - this._focusedItemIndex) + 1 : this._focusedItemIndex + 1;
|
|
745
|
-
}
|
|
746
662
|
get ofText() {
|
|
747
663
|
return Carousel_1.i18nBundle.getText(CAROUSEL_OF_TEXT);
|
|
748
664
|
}
|
|
@@ -827,7 +743,7 @@ __decorate([
|
|
|
827
743
|
], Carousel.prototype, "_visibleItemsCount", void 0);
|
|
828
744
|
__decorate([
|
|
829
745
|
property({ type: Number, noAttribute: true })
|
|
830
|
-
], Carousel.prototype, "
|
|
746
|
+
], Carousel.prototype, "_currentPageIndex", void 0);
|
|
831
747
|
__decorate([
|
|
832
748
|
slot({ "default": true, type: HTMLElement, individualSlots: true })
|
|
833
749
|
], Carousel.prototype, "content", void 0);
|