Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorJohann-S <johann.servoire@gmail.com>2017-08-23 13:03:50 +0300
committerXhmikosR <xhmikosr@gmail.com>2019-02-20 23:05:45 +0300
commit2970d14dd91bf1f5f236766c856e81c297fa1390 (patch)
tree36e6b14473bd1973e2fcf44a00badad0e645dfc3 /js
parenta3398fffd6e5b73a6a2cc2a1fc454ab199b2bf82 (diff)
Remove jQuery from alert.js and add .alert only if jQuery is available
Diffstat (limited to 'js')
-rw-r--r--js/src/alert.js27
-rw-r--r--js/src/dom/data.js6
-rw-r--r--js/src/dom/eventHandler.js5
-rw-r--r--js/src/dom/selectorEngine.js11
-rw-r--r--js/tests/unit/alert.js18
5 files changed, 30 insertions, 37 deletions
diff --git a/js/src/alert.js b/js/src/alert.js
index 5e99f6d011..c530b2996b 100644
--- a/js/src/alert.js
+++ b/js/src/alert.js
@@ -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
diff --git a/js/src/dom/data.js b/js/src/dom/data.js
index bbe807aac1..51ebb8d3f3 100644
--- a/js/src/dom/data.js
+++ b/js/src/dom/data.js
@@ -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
diff --git a/js/src/dom/eventHandler.js b/js/src/dom/eventHandler.js
index ae3ccafadb..bcaefd59ce 100644
--- a/js/src/dom/eventHandler.js
+++ b/js/src/dom/eventHandler.js
@@ -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
}
}
diff --git a/js/src/dom/selectorEngine.js b/js/src/dom/selectorEngine.js
index 1b33bf62d6..f6f3fe82f0 100644
--- a/js/src/dom/selectorEngine.js
+++ b/js/src/dom/selectorEngine.js
@@ -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)
}
}
diff --git a/js/tests/unit/alert.js b/js/tests/unit/alert.js
index 32fcc6ceaf..588908d66e 100644
--- a/js/tests/unit/alert.js
+++ b/js/tests/unit/alert.js
@@ -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) {