]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Tooltip: Change `_enter` & `_leave` to work without arguments
authorGeoSot <geo.sotis@gmail.com>
Sun, 28 Nov 2021 01:09:42 +0000 (03:09 +0200)
committerXhmikosR <xhmikosr@gmail.com>
Wed, 1 Dec 2021 16:00:36 +0000 (18:00 +0200)
js/src/tooltip.js
js/tests/unit/tooltip.spec.js

index ccec08ddacb02f4c528dc23c70cb500da4ff5a90..645a6b7e28fb8e2283718f9233af42e30b900acc 100644 (file)
@@ -179,17 +179,17 @@ class Tooltip extends BaseComponent {
       context._activeTrigger.click = !context._activeTrigger.click
 
       if (context._isWithActiveTrigger()) {
-        context._enter(null, context)
+        context._enter()
       } else {
-        context._leave(null, context)
+        context._leave()
       }
     } else {
       if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {
-        this._leave(null, this)
+        this._leave()
         return
       }
 
-      this._enter(null, this)
+      this._enter()
     }
   }
 
@@ -265,7 +265,7 @@ class Tooltip extends BaseComponent {
       EventHandler.trigger(this._element, this.constructor.Event.SHOWN)
 
       if (prevHoverState === HOVER_STATE_OUT) {
-        this._leave(null, this)
+        this._leave()
       }
     }
 
@@ -401,8 +401,8 @@ class Tooltip extends BaseComponent {
   }
 
   // Private
-  _initializeOnDelegatedTarget(event, context) {
-    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())
+  _initializeOnDelegatedTarget(event) {
+    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())
   }
 
   _isAnimated() {
@@ -478,8 +478,18 @@ class Tooltip extends BaseComponent {
           this.constructor.Event.MOUSELEAVE :
           this.constructor.Event.FOCUSOUT
 
-        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))
-        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))
+        EventHandler.on(this._element, eventIn, this._config.selector, event => {
+          const context = this._initializeOnDelegatedTarget(event)
+          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true
+          context._enter()
+        })
+        EventHandler.on(this._element, eventOut, this._config.selector, event => {
+          const context = this._initializeOnDelegatedTarget(event)
+          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =
+            context._element.contains(event.relatedTarget)
+
+          context._leave()
+        })
       }
     }
 
@@ -510,63 +520,47 @@ class Tooltip extends BaseComponent {
     }
   }
 
-  _enter(event, context) {
-    context = this._initializeOnDelegatedTarget(event, context)
-
-    if (event) {
-      context._activeTrigger[
-        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER
-      ] = true
-    }
-
-    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {
-      context._hoverState = HOVER_STATE_SHOW
+  _enter() {
+    if (this.getTipElement().classList.contains(CLASS_NAME_SHOW) || this._hoverState === HOVER_STATE_SHOW) {
+      this._hoverState = HOVER_STATE_SHOW
       return
     }
 
-    clearTimeout(context._timeout)
+    clearTimeout(this._timeout)
 
-    context._hoverState = HOVER_STATE_SHOW
+    this._hoverState = HOVER_STATE_SHOW
 
-    if (!context._config.delay.show) {
-      context.show()
+    if (!this._config.delay.show) {
+      this.show()
       return
     }
 
-    context._timeout = setTimeout(() => {
-      if (context._hoverState === HOVER_STATE_SHOW) {
-        context.show()
+    this._timeout = setTimeout(() => {
+      if (this._hoverState === HOVER_STATE_SHOW) {
+        this.show()
       }
-    }, context._config.delay.show)
+    }, this._config.delay.show)
   }
 
-  _leave(event, context) {
-    context = this._initializeOnDelegatedTarget(event, context)
-
-    if (event) {
-      context._activeTrigger[
-        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER
-      ] = context._element.contains(event.relatedTarget)
-    }
-
-    if (context._isWithActiveTrigger()) {
+  _leave() {
+    if (this._isWithActiveTrigger()) {
       return
     }
 
-    clearTimeout(context._timeout)
+    clearTimeout(this._timeout)
 
-    context._hoverState = HOVER_STATE_OUT
+    this._hoverState = HOVER_STATE_OUT
 
-    if (!context._config.delay.hide) {
-      context.hide()
+    if (!this._config.delay.hide) {
+      this.hide()
       return
     }
 
-    context._timeout = setTimeout(() => {
-      if (context._hoverState === HOVER_STATE_OUT) {
-        context.hide()
+    this._timeout = setTimeout(() => {
+      if (this._hoverState === HOVER_STATE_OUT) {
+        this.hide()
       }
-    }, context._config.delay.hide)
+    }, this._config.delay.hide)
   }
 
   _isWithActiveTrigger() {
index d261986c374b87f9c8230968d5704884d92abc01..7dff265b75e63cbd61d11187f84a04dae3c3cafb 100644 (file)
@@ -702,7 +702,7 @@ describe('Tooltip', () => {
           expect(document.querySelectorAll('.tooltip')).toHaveSize(1)
           done()
         }, 200)
-      }, 0)
+      }, 3)
 
       tooltipEl.dispatchEvent(createEvent('mouseover'))
     })
@@ -765,7 +765,7 @@ describe('Tooltip', () => {
           expect(tooltip.getTipElement().getAttribute('data-popper-placement')).toEqual('top')
           done()
         }, 200)
-      }, 0)
+      }, 3)
 
       tooltipEl.dispatchEvent(createEvent('mouseover'))
     })