// Public
show() {
- EventHandler.trigger(this._element, Event.SHOW)
+ const showEvent = EventHandler.trigger(this._element, Event.SHOW)
+
+ if (showEvent.defaultPrevented) {
+ return
+ }
if (this._config.animation) {
this._element.classList.add(ClassName.FADE)
return
}
- EventHandler.trigger(this._element, Event.HIDE)
+ const hideEvent = EventHandler.trigger(this._element, Event.HIDE)
+
+ if (hideEvent.defaultPrevented) {
+ return
+ }
const complete = () => {
this._element.classList.add(ClassName.HIDE)
var toast = Toast._getInstance($toast[0])
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')
+ })
})