]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
remove old references to jquery and some fixes
authorJohann-S <johann.servoire@gmail.com>
Sun, 11 Mar 2018 15:18:56 +0000 (16:18 +0100)
committerXhmikosR <xhmikosr@gmail.com>
Wed, 20 Feb 2019 20:05:45 +0000 (22:05 +0200)
14 files changed:
js/src/alert.js
js/src/button.js
js/src/carousel.js
js/src/collapse.js
js/src/dom/data.js
js/src/dropdown.js
js/src/index.js
js/src/modal.js
js/src/util.js
js/tests/unit/alert.js
js/tests/unit/button.js
js/tests/unit/dropdown.js
js/tests/unit/popover.js
js/tests/unit/tooltip.js

index 1bdd9706a46dc5a9ec06676ad521c13742b3c840..9332aa891dcc9c0437319687d32fcee73062bf79 100644 (file)
@@ -114,8 +114,11 @@ class Alert {
   }
 
   _destroyElement(element) {
+    if (element.parentNode) {
+      element.parentNode.removeChild(element)
+    }
+
     EventHandler.trigger(element, Event.CLOSED)
-    element.parentNode.removeChild(element)
   }
 
   // Static
@@ -150,8 +153,8 @@ EventHandler.on(document, Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleD
  * add .alert to jQuery only if jQuery is present
  */
 
-if (typeof window.$ !== 'undefined' || typeof window.jQuery !== 'undefined') {
-  const $                  = window.$ || window.jQuery
+const $ = Util.jQuery
+if (typeof $ !== 'undefined') {
   const JQUERY_NO_CONFLICT = $.fn[NAME]
   $.fn[NAME]               = Alert._jQueryInterface
   $.fn[NAME].Constructor   = Alert
index acba736af4c95deb16e9325c682652962e4c79ef..0e3b8a9df5e10359afa68d7ba90d9f81dbd24ec0 100644 (file)
@@ -9,6 +9,7 @@ import Data from './dom/data'
 import EventHandler from './dom/eventHandler'
 import Manipulator from './dom/manipulator'
 import SelectorEngine from './dom/selectorEngine'
+import Util from './util'
 
 /**
  * ------------------------------------------------------------------------
@@ -175,8 +176,8 @@ EventHandler.on(document, Event.BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (eve
  * add .button to jQuery only if jQuery is present
  */
 
-if (typeof window.$ !== 'undefined' || typeof window.jQuery !== 'undefined') {
-  const $                   = window.$ || window.jQuery
+const $ = Util.jQuery
+if (typeof $ !== 'undefined') {
   const JQUERY_NO_CONFLICT  = $.fn[NAME]
   $.fn[NAME]                = Button._jQueryInterface
   $.fn[NAME].Constructor    = Button
index e33788594df46a84bb5964b8c0e5d50ef36551f7..fd6d5bf80259b1b147af79585537dd45f3e9bf2f 100644 (file)
@@ -571,7 +571,7 @@ class Carousel {
       config.interval = false
     }
 
-    Carousel._jQueryInterface.call($(target), config)
+    Carousel._carouselInterface(target, config)
 
     if (slideIndex) {
       Data.getData(target, DATA_KEY).to(slideIndex)
@@ -605,8 +605,8 @@ EventHandler.on(window, Event.LOAD_DATA_API, () => {
  * add .carousel to jQuery only if jQuery is present
  */
 
-if (typeof window.$ !== 'undefined' || typeof window.jQuery !== 'undefined') {
-  const $                  = window.$ || window.jQuery
+const $ = Util.jQuery
+if (typeof $ !== 'undefined') {
   const JQUERY_NO_CONFLICT = $.fn[NAME]
   $.fn[NAME]               = Carousel._jQueryInterface
   $.fn[NAME].Constructor   = Carousel
index 31200c33a8c52e3b13d0944a5291bdf897529dbc..7d6aa30ed8a9710f45f6bd833917f51805d0403a 100644 (file)
@@ -141,12 +141,11 @@ class Collapse {
       }
     }
 
+    const container = SelectorEngine.findOne(this._selector)
     if (actives) {
-      const tempActiveData = actives.filter((elem) => {
-        const container = SelectorEngine.findOne(this._selector)
-        return !container.contains(elem)
-      })
+      const tempActiveData = actives.filter((elem) => container !== elem)
       activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY) : null
+
       if (activesData && activesData._isTransitioning) {
         return
       }
@@ -159,14 +158,14 @@ class Collapse {
 
     if (actives) {
       actives.forEach((elemActive) => {
-        const container = SelectorEngine.findOne(this._selector)
-        if (!container.contains(elemActive)) {
+        if (container !== elemActive) {
           Collapse._collapseInterface(elemActive, 'hide')
         }
+
+        if (!activesData) {
+          Data.setData(elemActive, DATA_KEY, null)
+        }
       })
-      if (!activesData) {
-        Data.setData(actives[0], DATA_KEY, null)
-      }
     }
 
     const dimension = this._getDimension()
index 82ff5eae8375d0b9f0c6b3e439c4e70aece3b8ae..4cee65d2b8395bd0781af823be37c97f05693ab6 100644 (file)
@@ -23,10 +23,10 @@ const Data = (() => {
             key,
             id
           }
+          id++
         }
 
-        storeData[id] = data
-        id++
+        storeData[element.key.id] = data
       },
       get(element, key) {
         if (typeof element === 'undefined' || typeof element.key === 'undefined') {
index 85d8738e0d497c415ee7a6c86efd53435d722731..ddc783c0dd8a26771bf16134cd29685d8ced460c 100644 (file)
@@ -460,7 +460,7 @@ class Dropdown {
     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 ||
-        $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
+        SelectorEngine.closest(event.target, Selector.MENU)) : !REGEXP_KEYDOWN.test(event.which)) {
       return
     }
 
index 665b889c5555babfd3f8dfa067a5669d24b09ac9..327de242b280ef12960f5c9b0be3d7ba844db08f 100644 (file)
@@ -17,21 +17,6 @@ import Util from './util'
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  * --------------------------------------------------------------------------
  */
-(() => {
-  // only check jQuery version if jQuery is available
-  if (typeof window.$ !== 'undefined' || typeof window.jQuery !== 'undefined') {
-    const version = window.$.fn.jquery.split(' ')[0].split('.')
-    const minMajor = 1
-    const ltMajor  = 2
-    const minMinor = 9
-    const minPatch = 1
-    const maxMajor = 4
-
-    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
-      throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
-    }
-  }
-})()
 
 export {
   Util,
index 898d1c73d75941af4b347a62941f561cd7f0f19a..6da3d25aa820a96f3ffda5eb47b58dc7dd4a28c2 100644 (file)
@@ -232,7 +232,7 @@ class Modal {
   }
 
   _showElement(relatedTarget) {
-    const transition = $(this._element).hasClass(ClassName.FADE)
+    const transition = this._element.classList.contains(ClassName.FADE)
 
     if (!this._element.parentNode ||
         this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
@@ -295,14 +295,14 @@ class Modal {
 
   _setEscapeEvent() {
     if (this._isShown && this._config.keyboard) {
-      $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {
+      EventHandler.on(this._element, Event.KEYDOWN_DISMISS, (event) => {
         if (event.which === ESCAPE_KEYCODE) {
           event.preventDefault()
           this.hide()
         }
       })
     } else if (!this._isShown) {
-      $(this._element).off(Event.KEYDOWN_DISMISS)
+      EventHandler.off(this._element, Event.KEYDOWN_DISMISS)
     }
   }
 
index 667f46076f96a32d4e01f074d596273b7304af24..78f5fe3fbe2ec0c997b948c787a2290e999b2263 100644 (file)
@@ -69,8 +69,8 @@ const Util = {
     }
 
     // Get transition-duration of the element
-    let transitionDuration = element.style.transitionDuration
-    let transitionDelay = element.style.transitionDelay
+    let transitionDuration = window.getComputedStyle(element).transitionDuration
+    let transitionDelay = window.getComputedStyle(element).transitionDelay
 
     const floatTransitionDuration = parseFloat(transitionDuration)
     const floatTransitionDelay = parseFloat(transitionDelay)
@@ -92,7 +92,7 @@ const Util = {
   },
 
   triggerTransitionEnd(element) {
-    EventHandler.trigger(element, Util.TRANSITION_END)
+    element.dispatchEvent(new Event(Util.TRANSITION_END))
   },
 
   // TODO: Remove in v5
index 588908d66e4dc5fc17e46be2647dc5ae6321e442..3fe796e28b54aef8d19a3e01f040da4cc9261a5a 100644 (file)
@@ -91,7 +91,7 @@ $(function () {
     var done = assert.async()
     var $el = $('<div/>')
     var $alert = $el.bootstrapAlert()
-    var alertInstance = $alert.data('bs.alert')
+    var alertInstance = Data.getData($alert[0], 'bs.alert')
 
     $alert.one('closed.bs.alert', function () {
       assert.ok('alert closed')
@@ -107,11 +107,11 @@ $(function () {
     var $el = $('<div/>')
     var $alert = $el.bootstrapAlert()
 
-    assert.ok(typeof $alert.data('bs.alert') !== 'undefined')
+    assert.ok(typeof Data.getData($alert[0], 'bs.alert') !== 'undefined')
 
-    $alert.data('bs.alert').dispose()
+    Data.getData($alert[0], 'bs.alert').dispose()
 
-    assert.ok(typeof $alert.data('bs.button') === 'undefined')
+    assert.ok(Data.getData($alert[0], 'bs.alert') === null)
   })
 
   QUnit.test('should return alert version', function (assert) {
index c162e3a9fdcd7f33e84d596a794265d615f12cfc..0fa19d1548f219088075f6e689575884b3261e48 100644 (file)
@@ -208,11 +208,11 @@ $(function () {
     var $el = $('<div/>')
     var $button = $el.bootstrapButton()
 
-    assert.ok(typeof $button.data('bs.button') !== 'undefined')
+    assert.ok(typeof Data.getData($button[0], 'bs.button') !== 'undefined')
 
-    $button.data('bs.button').dispose()
+    Data.getData($button[0], 'bs.button').dispose()
 
-    assert.ok(typeof $button.data('bs.button') === 'undefined')
+    assert.ok(Data.getData($button[0], 'bs.button') === null)
   })
 
   QUnit.test('should return button version', function (assert) {
index 2595ec27b2a782bc6d1ed3c1a45563e0122eb1bc..c94b8a44106ffe06d47689076fe4b0cd63e45bcc 100644 (file)
@@ -1025,7 +1025,7 @@ $(function () {
       .find('[data-toggle="dropdown"]')
       .bootstrapDropdown()
 
-    var dropdown = $dropdown.data('bs.dropdown')
+    var dropdown = Data.getData($dropdown[0], 'bs.dropdown')
     dropdown.toggle()
     assert.ok(dropdown._popper)
 
@@ -1053,7 +1053,7 @@ $(function () {
       .find('[data-toggle="dropdown"]')
       .bootstrapDropdown()
 
-    var dropdown = $dropdown.data('bs.dropdown')
+    var dropdown = Data.getData($dropdown[0], 'bs.dropdown')
     var spyDetectNavbar = sinon.spy(dropdown, '_detectNavbar')
 
     dropdown.update()
@@ -1078,7 +1078,7 @@ $(function () {
       .find('[data-toggle="dropdown"]')
       .bootstrapDropdown()
 
-    var dropdown = $dropdown.data('bs.dropdown')
+    var dropdown = Data.getData($dropdown[0], 'bs.dropdown')
     dropdown.toggle()
 
     assert.ok(dropdown._popper)
@@ -1109,7 +1109,7 @@ $(function () {
       .find('[data-toggle="dropdown"]')
       .bootstrapDropdown()
 
-    var dropdown = $dropdown.data('bs.dropdown')
+    var dropdown = Data.getData($dropdown[0], 'bs.dropdown')
 
     assert.notOk(dropdown._popper)
     assert.ok(dropdown._menu !== null)
index da436ad283300ae1ebe3f9c36168f6834b674ad8..0dd9c98e397c110ae2647766311e68cc31b3ccb2 100644 (file)
@@ -279,14 +279,14 @@ $(function () {
       })
       .one('shown.bs.popover', function () {
         assert.notEqual($('.popover').length, 0, 'popover was inserted')
-        $div.find('a').trigger('click')
+        EventHandler.trigger($div.find('a')[0], 'click')
       })
       .one('hidden.bs.popover', function () {
         assert.strictEqual($('.popover').length, 0, 'popover was removed')
         done()
       })
 
-    $div.find('a').trigger('click')
+    EventHandler.trigger($div.find('a')[0], 'click')
   })
 
   QUnit.test('should detach popover content rather than removing it so that event handlers are left intact', function (assert) {
index d2729fa64f14930e0da11549da32231f6c49a25b..081cbb1099cb490df543879cee4e66096f24cbaf 100644 (file)
@@ -1000,7 +1000,7 @@ $(function () {
       .appendTo('#qunit-fixture')
       .bootstrapTooltip()
 
-    var tooltip = $tooltip.data('bs.tooltip')
+    var tooltip = Data.getData($tooltip[0], 'bs.tooltip')
     tooltip.show()
     assert.ok(tooltip._popper)
 
@@ -1016,7 +1016,7 @@ $(function () {
       .appendTo('#qunit-fixture')
       .bootstrapTooltip()
 
-    var tooltip = $tooltip.data('bs.tooltip')
+    var tooltip = Data.getData($tooltip[0], 'bs.tooltip')
     tooltip.update()
 
     assert.ok(tooltip._popper === null)