]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Remove jQuery from alert.js and add .alert only if jQuery is available
authorJohann-S <johann.servoire@gmail.com>
Wed, 23 Aug 2017 10:03:50 +0000 (12:03 +0200)
committerXhmikosR <xhmikosr@gmail.com>
Wed, 20 Feb 2019 20:05:45 +0000 (22:05 +0200)
js/src/alert.js
js/src/dom/data.js
js/src/dom/eventHandler.js
js/src/dom/selectorEngine.js
js/tests/unit/alert.js

index 5e99f6d01179a97cb6f4591c3b69c2f245c7f637..c530b2996b4e6e2d435ac76fbc46b2b9fef84015 100644 (file)
@@ -85,8 +85,7 @@ class Alert {
     let parent     = false
 
     if (selector) {
-      const tmpSelected = SelectorEngine.find(selector)
-      parent = tmpSelected[0]
+      parent = SelectorEngine.find(selector)[0]
     }
 
     if (!parent) {
@@ -136,16 +135,6 @@ class Alert {
       }
     })
   }
-
-  static _handleDismiss(alertInstance) {
-    return function (event) {
-      if (event) {
-        event.preventDefault()
-      }
-
-      alertInstance.close(this)
-    }
-  }
 }
 
 /**
@@ -159,13 +148,17 @@ EventHandler.on(document, Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleD
  * ------------------------------------------------------------------------
  * jQuery
  * ------------------------------------------------------------------------
+ * add .alert to jQuery only if jQuery is present
  */
 
-$.fn[NAME]             = Alert._jQueryInterface
-$.fn[NAME].Constructor = Alert
-$.fn[NAME].noConflict  = () => {
-  $.fn[NAME] = JQUERY_NO_CONFLICT
-  return Alert._jQueryInterface
+if (typeof window.$ !== 'undefined' || typeof window.jQuery !== 'undefined') {
+  const $ = window.$ || window.jQuery
+  $.fn[NAME]             = Alert._jQueryInterface
+  $.fn[NAME].Constructor = Alert
+  $.fn[NAME].noConflict  = () => {
+    $.fn[NAME] = JQUERY_NO_CONFLICT
+    return Alert._jQueryInterface
+  }
 }
 
 export default Alert
index bbe807aac1e10770406531996813cf36d69a8cfc..51ebb8d3f3808af853fc71021467733d582a6de5 100644 (file)
@@ -10,7 +10,7 @@ const mapData = (() => {
   return {
     set(element, key, data) {
       let id
-      if (element.key === undefined) {
+      if (typeof element.key === 'undefined') {
         element.key = {
           key,
           id
@@ -20,14 +20,14 @@ const mapData = (() => {
       storeData[id] = data
     },
     get(element, key) {
-      if (element.key === undefined || element.key !== key) {
+      if (typeof element.key === 'undefined' || element.key !== key) {
         return null
       }
       const keyProperties = element.key
       return storeData[keyProperties.id]
     },
     delete(element, key) {
-      if (element.key === undefined || element.key !== key) {
+      if (typeof element.key === 'undefined' || element.key !== key) {
         return
       }
       const keyProperties = element.key
index ae3ccafadb58661ba944074b83d6fae07f7fad55..bcaefd59cece0688d6a484d329ef95d940a2a5e0 100644 (file)
@@ -19,7 +19,8 @@ if (typeof window.CustomEvent !== 'function') {
   window.CustomEvent = (event, params) => {
     params = params || {
       bubbles: false,
-      cancelable: false
+      cancelable: false,
+      detail: null
     }
     const evt = document.createEvent('CustomEvent')
     evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)
@@ -101,6 +102,8 @@ function bootstrapDelegationHandler(selector, fn) {
         }
       }
     }
+    // To please ESLint
+    return null
   }
 }
 
index 1b33bf62d6d8e7982220c76ef3c2eb41de9e6df9..f6f3fe82f0cc8f215fd0eb45522fc78038be08e8 100644 (file)
@@ -16,9 +16,8 @@ if (!Element.prototype.matches) {
 }
 
 // closest polyfill (see: https://mzl.la/2vXggaI)
-let fnClosest = null
 if (!Element.prototype.closest) {
-  fnClosest = (element, selector) => {
+  Element.prototype.closest = (element, selector) => {
     let ancestor = element
     if (!document.documentElement.contains(element)) {
       return null
@@ -34,12 +33,10 @@ if (!Element.prototype.closest) {
 
     return null
   }
-} else {
-  fnClosest = (element, selector) => {
-    return element.closest(selector)
-  }
 }
 
+const fnClosest = Element.prototype.closest
+
 const SelectorEngine = {
   matches(element, selector) {
     return fnMatches.call(element, selector)
@@ -59,7 +56,7 @@ const SelectorEngine = {
   },
 
   closest(element, selector) {
-    return fnClosest(element, selector)
+    return fnClosest.call(element, selector)
   }
 }
 
index 32fcc6ceaf7235f9dbba10ba3af59d79e54613d8..588908d66e4dc5fc17e46be2647dc5ae6321e442 100644 (file)
@@ -42,8 +42,8 @@ $(function () {
 
     var $alert = $(alertHTML).bootstrapAlert().appendTo($('#qunit-fixture'))
 
-    $alert.find('.close').trigger('click')
-
+    var closeBtn = $alert.find('.close')[0]
+    EventHandler.trigger(closeBtn, 'click')
     assert.strictEqual($alert.hasClass('show'), false, 'remove .show class on .close click')
   })
 
@@ -58,13 +58,13 @@ $(function () {
 
     assert.notEqual($('#qunit-fixture').find('.alert').length, 0, 'element added to dom')
 
-    $alert
-      .one('closed.bs.alert', function () {
-        assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom')
-        done()
-      })
-      .find('.close')
-      .trigger('click')
+    EventHandler.on($alert[0], 'closed.bs.alert', function () {
+      assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom')
+      done()
+    })
+
+    var closeBtn = $alert.find('.close')[0]
+    EventHandler.trigger(closeBtn, 'click')
   })
 
   QUnit.test('should not fire closed when close is prevented', function (assert) {