mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-17 14:54:30 +01:00
toast should allow prevent default for hide and show events
This commit is contained in:
parent
4ea7e11233
commit
d5752a18ab
@ -90,7 +90,11 @@ class Toast {
|
|||||||
// Public
|
// Public
|
||||||
|
|
||||||
show() {
|
show() {
|
||||||
EventHandler.trigger(this._element, Event.SHOW)
|
const showEvent = EventHandler.trigger(this._element, Event.SHOW)
|
||||||
|
|
||||||
|
if (showEvent.defaultPrevented) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (this._config.animation) {
|
if (this._config.animation) {
|
||||||
this._element.classList.add(ClassName.FADE)
|
this._element.classList.add(ClassName.FADE)
|
||||||
@ -126,7 +130,11 @@ class Toast {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
EventHandler.trigger(this._element, Event.HIDE)
|
const hideEvent = EventHandler.trigger(this._element, Event.HIDE)
|
||||||
|
|
||||||
|
if (hideEvent.defaultPrevented) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const complete = () => {
|
const complete = () => {
|
||||||
this._element.classList.add(ClassName.HIDE)
|
this._element.classList.add(ClassName.HIDE)
|
||||||
|
@ -255,4 +255,75 @@ $(function () {
|
|||||||
var toast = Toast._getInstance($toast[0])
|
var toast = Toast._getInstance($toast[0])
|
||||||
assert.strictEqual(toast._config.delay, defaultDelay)
|
assert.strictEqual(toast._config.delay, defaultDelay)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
QUnit.test('should not trigger shown if show is prevented', function (assert) {
|
||||||
|
assert.expect(1)
|
||||||
|
var done = assert.async()
|
||||||
|
|
||||||
|
var toastHtml =
|
||||||
|
'<div class="toast" data-delay="1" data-autohide="false">' +
|
||||||
|
'<div class="toast-body">' +
|
||||||
|
'a simple toast' +
|
||||||
|
'</div>' +
|
||||||
|
'</div>'
|
||||||
|
|
||||||
|
var $toast = $(toastHtml)
|
||||||
|
.bootstrapToast()
|
||||||
|
.appendTo($('#qunit-fixture'))
|
||||||
|
|
||||||
|
var shownCalled = false
|
||||||
|
function assertDone() {
|
||||||
|
setTimeout(function () {
|
||||||
|
assert.strictEqual(shownCalled, false)
|
||||||
|
done()
|
||||||
|
}, 20)
|
||||||
|
}
|
||||||
|
|
||||||
|
$toast
|
||||||
|
.on('show.bs.toast', function (event) {
|
||||||
|
event.preventDefault()
|
||||||
|
assertDone()
|
||||||
|
})
|
||||||
|
.on('shown.bs.toast', function () {
|
||||||
|
shownCalled = true
|
||||||
|
})
|
||||||
|
.bootstrapToast('show')
|
||||||
|
})
|
||||||
|
|
||||||
|
QUnit.test('should not trigger hidden if hide is prevented', function (assert) {
|
||||||
|
assert.expect(1)
|
||||||
|
var done = assert.async()
|
||||||
|
|
||||||
|
var toastHtml =
|
||||||
|
'<div class="toast" data-delay="1" data-autohide="false">' +
|
||||||
|
'<div class="toast-body">' +
|
||||||
|
'a simple toast' +
|
||||||
|
'</div>' +
|
||||||
|
'</div>'
|
||||||
|
|
||||||
|
var $toast = $(toastHtml)
|
||||||
|
.bootstrapToast()
|
||||||
|
.appendTo($('#qunit-fixture'))
|
||||||
|
|
||||||
|
var hiddenCalled = false
|
||||||
|
function assertDone() {
|
||||||
|
setTimeout(function () {
|
||||||
|
assert.strictEqual(hiddenCalled, false)
|
||||||
|
done()
|
||||||
|
}, 20)
|
||||||
|
}
|
||||||
|
|
||||||
|
$toast
|
||||||
|
.on('shown.bs.toast', function () {
|
||||||
|
$toast.bootstrapToast('hide')
|
||||||
|
})
|
||||||
|
.on('hide.bs.toast', function (event) {
|
||||||
|
event.preventDefault()
|
||||||
|
assertDone()
|
||||||
|
})
|
||||||
|
.on('hidden.bs.toast', function () {
|
||||||
|
hiddenCalled = true
|
||||||
|
})
|
||||||
|
.bootstrapToast('show')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user