diff --git a/packages/base/src/config/CalendarType.js b/packages/base/src/config/CalendarType.js index ee90b723fb7f..b7c7dc986dae 100644 --- a/packages/base/src/config/CalendarType.js +++ b/packages/base/src/config/CalendarType.js @@ -5,7 +5,7 @@ const calendarType = getConfiguredCalendarType(); const getCalendarType = () => { if (calendarType) { - const type = Object.keys(CalendarType).filter(calType => calType === calendarType)[0]; + const type = Object.keys(CalendarType).find(calType => calType === calendarType); if (type) { return type; diff --git a/packages/base/src/features/browsersupport/IE11.js b/packages/base/src/features/browsersupport/IE11.js index 211573695ac2..c0773767709d 100644 --- a/packages/base/src/features/browsersupport/IE11.js +++ b/packages/base/src/features/browsersupport/IE11.js @@ -6,6 +6,7 @@ import "../../thirdparty/Object.entries.js"; // Array import "../../thirdparty/Array.prototype.fill.js"; +import "../../thirdparty/Array.prototype.find.js"; import "../../thirdparty/Array.prototype.includes.js"; // Number diff --git a/packages/base/src/thirdparty/Array.prototype.find.js b/packages/base/src/thirdparty/Array.prototype.find.js new file mode 100644 index 000000000000..f850da6b7f6c --- /dev/null +++ b/packages/base/src/thirdparty/Array.prototype.find.js @@ -0,0 +1,46 @@ +// https://tc39.github.io/ecma262/#sec-array.prototype.find +if (!Array.prototype.find) { + Object.defineProperty(Array.prototype, 'find', { + value: function (predicate) { + // 1. Let O be ? ToObject(this value). + if (this == null) { + throw TypeError('"this" is null or not defined'); + } + + var o = Object(this); + + // 2. Let len be ? ToLength(? Get(O, "length")). + var len = o.length >>> 0; + + // 3. If IsCallable(predicate) is false, throw a TypeError exception. + if (typeof predicate !== 'function') { + throw TypeError('predicate must be a function'); + } + + // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. + var thisArg = arguments[1]; + + // 5. Let k be 0. + var k = 0; + + // 6. Repeat, while k < len + while (k < len) { + // a. Let Pk be ! ToString(k). + // b. Let kValue be ? Get(O, Pk). + // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). + // d. If testResult is true, return kValue. + var kValue = o[k]; + if (predicate.call(thisArg, kValue, k, o)) { + return kValue; + } + // e. Increase k by 1. + k++; + } + + // 7. Return undefined. + return undefined; + }, + configurable: true, + writable: true + }); +} diff --git a/packages/base/src/util/TabbableElements.js b/packages/base/src/util/TabbableElements.js index 03f3545c21d2..f8d26ff9294c 100644 --- a/packages/base/src/util/TabbableElements.js +++ b/packages/base/src/util/TabbableElements.js @@ -21,7 +21,7 @@ const getTabbables = (nodes, tabbables) => { if (currentNode.shadowRoot) { // get the root node of the ShadowDom (1st none style tag) const children = currentNode.shadowRoot.children; - currentNode = Array.from(children).filter(node => node.tagName !== "STYLE")[0]; + currentNode = Array.from(children).find(node => node.tagName !== "STYLE"); } if (isNodeTabbable(currentNode)) { diff --git a/packages/main/src/MultiComboBox.js b/packages/main/src/MultiComboBox.js index d523c8b4175f..f3cebab30a3d 100644 --- a/packages/main/src/MultiComboBox.js +++ b/packages/main/src/MultiComboBox.js @@ -325,7 +325,7 @@ class MultiComboBox extends UI5Element { _tokenDelete(event) { const token = event.detail.ref; - const deletingItem = this.items.filter(item => item._id === token.getAttribute("data-ui5-id"))[0]; + const deletingItem = this.items.find(item => item._id === token.getAttribute("data-ui5-id")); deletingItem.selected = false; this._deleting = true; diff --git a/packages/main/src/ShellBar.js b/packages/main/src/ShellBar.js index b497a4004e3a..bf148ad1d01f 100644 --- a/packages/main/src/ShellBar.js +++ b/packages/main/src/ShellBar.js @@ -403,9 +403,9 @@ class ShellBar extends UI5Element { this._itemNav.setItemsCallback = items => { const newItems = that._itemsInfo.map(stateItem => { - const mappingItem = items.filter(item => { + const mappingItem = items.find(item => { return item.id === stateItem.id; - })[0]; + }); const clone = JSON.parse(JSON.stringify(stateItem)); clone._tabIndex = mappingItem ? mappingItem._tabIndex : "-1"; @@ -483,7 +483,7 @@ class ShellBar extends UI5Element { const width = this.getBoundingClientRect().width; const breakpoints = ShellBar.FIORI_3_BREAKPOINTS; - const size = breakpoints.filter(bp1 => width < bp1)[0] || ShellBar.FIORI_3_BREAKPOINTS[ShellBar.FIORI_3_BREAKPOINTS.length - 1]; + const size = breakpoints.find(bp1 => width < bp1) || ShellBar.FIORI_3_BREAKPOINTS[ShellBar.FIORI_3_BREAKPOINTS.length - 1]; const mappedSize = ShellBar.FIORI_3_BREAKPOINTS_MAP[size]; if (this.breakpointSize !== mappedSize) { @@ -583,11 +583,11 @@ class ShellBar extends UI5Element { return 1; }); - const focusedItem = items.filter(item => { + const focusedItem = items.find(item => { return (item.classes.indexOf("ui5-shellbar-invisible-button") === -1) && (item.classes.indexOf("ui5-shellbar-overflow-button") === -1) && (item.classes.indexOf("ui5-shellbar-hidden-button") === -1); - })[0]; + }); return focusedItem; } @@ -680,9 +680,9 @@ class ShellBar extends UI5Element { this._itemNav.currentIndex = elementIndex; if (refItemId) { - const shellbarItem = this.items.filter(item => { + const shellbarItem = this.items.find(item => { return item.shadowRoot.querySelector(`#${refItemId}`); - })[0]; + }); const prevented = !shellbarItem.fireEvent("itemClick", { targetRef: event.target }, true);