From 4d101491da094418a768ff2f44be1ca85fd85922 Mon Sep 17 00:00:00 2001
From: Markus Hatvan <markus_hatvan@aon.at>
Date: Thu, 22 Aug 2019 21:17:34 +0200
Subject: [PATCH] Remaining JS linting TODO (#29289)

* Enable and fix all occurrences with no-mixed-operators rule
* Take care of the max-depth warning in button.js

Signed-off-by: mhatvan <markus_hatvan@aon.at>
---
 .eslintrc.json              |  2 +-
 js/src/button/button.js     | 20 +++++++++-----------
 js/src/carousel/carousel.js |  8 ++++----
 js/src/dom/event-handler.js |  2 +-
 js/src/dropdown/dropdown.js | 16 ++++++++--------
 js/src/tab/tab.js           |  6 +++---
 6 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/.eslintrc.json b/.eslintrc.json
index c4ae0d667f..54e952e360 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -27,7 +27,7 @@
       "always-multiline"
     ],
     "new-cap": "off",
-    "no-mixed-operators": "off",
+    "no-mixed-operators": "error",
     "object-curly-spacing": [
       "error",
       "always"
diff --git a/js/src/button/button.js b/js/src/button/button.js
index d64f5130e2..4418ba6b87 100644
--- a/js/src/button/button.js
+++ b/js/src/button/button.js
@@ -74,17 +74,15 @@ class Button {
     if (rootElement) {
       const input = SelectorEngine.findOne(Selector.INPUT, this._element)
 
-      if (input) {
-        if (input.type === 'radio') {
-          if (input.checked &&
-            this._element.classList.contains(ClassName.ACTIVE)) {
-            triggerChangeEvent = false
-          } else {
-            const activeElement = SelectorEngine.findOne(Selector.ACTIVE, rootElement)
-
-            if (activeElement) {
-              activeElement.classList.remove(ClassName.ACTIVE)
-            }
+      if (input && input.type === 'radio') {
+        if (input.checked &&
+          this._element.classList.contains(ClassName.ACTIVE)) {
+          triggerChangeEvent = false
+        } else {
+          const activeElement = SelectorEngine.findOne(Selector.ACTIVE, rootElement)
+
+          if (activeElement) {
+            activeElement.classList.remove(ClassName.ACTIVE)
           }
         }
 
diff --git a/js/src/carousel/carousel.js b/js/src/carousel/carousel.js
index 40984fe80f..723bf57c66 100644
--- a/js/src/carousel/carousel.js
+++ b/js/src/carousel/carousel.js
@@ -377,8 +377,8 @@ class Carousel {
     const isPrevDirection = direction === Direction.PREV
     const activeIndex = this._getItemIndex(activeElement)
     const lastItemIndex = this._items.length - 1
-    const isGoingToWrap = isPrevDirection && activeIndex === 0 ||
-                            isNextDirection && activeIndex === lastItemIndex
+    const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||
+                            (isNextDirection && activeIndex === lastItemIndex)
 
     if (isGoingToWrap && !this._config.wrap) {
       return activeElement
@@ -424,8 +424,8 @@ class Carousel {
   _slide(direction, element) {
     const activeElement = SelectorEngine.findOne(Selector.ACTIVE_ITEM, this._element)
     const activeElementIndex = this._getItemIndex(activeElement)
-    const nextElement = element || activeElement &&
-      this._getItemByDirection(direction, activeElement)
+    const nextElement = element || (activeElement &&
+      this._getItemByDirection(direction, activeElement))
 
     const nextElementIndex = this._getItemIndex(nextElement)
     const isCycling = Boolean(this._interval)
diff --git a/js/src/dom/event-handler.js b/js/src/dom/event-handler.js
index 71b3a643b8..98ebddaa23 100644
--- a/js/src/dom/event-handler.js
+++ b/js/src/dom/event-handler.js
@@ -81,7 +81,7 @@ const nativeEvents = [
  */
 
 function getUidEvent(element, uid) {
-  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++
+  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++
 }
 
 function getEvent(element) {
diff --git a/js/src/dropdown/dropdown.js b/js/src/dropdown/dropdown.js
index fc51f443cf..d3797b65c8 100644
--- a/js/src/dropdown/dropdown.js
+++ b/js/src/dropdown/dropdown.js
@@ -390,7 +390,7 @@ class Dropdown {
 
   static clearMenus(event) {
     if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||
-      event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
+      (event.type === 'keyup' && event.which !== TAB_KEYCODE))) {
       return
     }
 
@@ -415,9 +415,9 @@ class Dropdown {
         continue
       }
 
-      if (event && (event.type === 'click' &&
-          /input|textarea/i.test(event.target.tagName) ||
-          event.type === 'keyup' && event.which === TAB_KEYCODE) &&
+      if (event && ((event.type === 'click' &&
+          /input|textarea/i.test(event.target.tagName)) ||
+          (event.type === 'keyup' && event.which === TAB_KEYCODE)) &&
           parent.contains(event.target)) {
         continue
       }
@@ -459,9 +459,9 @@ class Dropdown {
     //    - If key is not up or down => not a dropdown command
     //    - If trigger inside the menu => not a dropdown command
     if (/input|textarea/i.test(event.target.tagName) ?
-      event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&
-      (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||
-        SelectorEngine.closest(event.target, Selector.MENU)) :
+      event.which === SPACE_KEYCODE || (event.which !== ESCAPE_KEYCODE &&
+      ((event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE) ||
+        SelectorEngine.closest(event.target, Selector.MENU))) :
       !REGEXP_KEYDOWN.test(event.which)) {
       return
     }
@@ -476,7 +476,7 @@ class Dropdown {
     const parent = Dropdown.getParentFromElement(this)
     const isActive = parent.classList.contains(ClassName.SHOW)
 
-    if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
+    if (!isActive || (isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE))) {
       if (event.which === ESCAPE_KEYCODE) {
         SelectorEngine.findOne(Selector.DATA_TOGGLE, parent).focus()
       }
diff --git a/js/src/tab/tab.js b/js/src/tab/tab.js
index b2374fe919..b356cc0e2b 100644
--- a/js/src/tab/tab.js
+++ b/js/src/tab/tab.js
@@ -78,9 +78,9 @@ class Tab {
   // Public
 
   show() {
-    if (this._element.parentNode &&
+    if ((this._element.parentNode &&
       this._element.parentNode.nodeType === Node.ELEMENT_NODE &&
-      this._element.classList.contains(ClassName.ACTIVE) ||
+      this._element.classList.contains(ClassName.ACTIVE)) ||
       this._element.classList.contains(ClassName.DISABLED)) {
       return
     }
@@ -108,7 +108,7 @@ class Tab {
     })
 
     if (showEvent.defaultPrevented ||
-      hideEvent !== null && hideEvent.defaultPrevented) {
+      (hideEvent !== null && hideEvent.defaultPrevented)) {
       return
     }
 
-- 
GitLab