mirror of
https://github.com/twbs/bootstrap.git
synced 2025-01-28 20:52:21 +01:00
Remove jQuery from alert.js and add .alert only if jQuery is available
This commit is contained in:
parent
a3398fffd6
commit
2970d14dd9
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user