diff --git a/js/src/modal.js b/js/src/modal.js
index e2d61621d3..69b77009d1 100644
--- a/js/src/modal.js
+++ b/js/src/modal.js
@@ -245,7 +245,7 @@ class Modal {
this._element.removeAttribute('aria-hidden')
this._element.setAttribute('aria-modal', true)
- if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {
+ if (this._dialog.classList.contains(ClassName.SCROLLABLE)) {
this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0
} else {
this._element.scrollTop = 0
diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js
index dacb1fb8d7..a9a3df838b 100644
--- a/js/tests/unit/modal.js
+++ b/js/tests/unit/modal.js
@@ -41,7 +41,7 @@ $(function () {
QUnit.test('should throw explicit error on undefined method', function (assert) {
assert.expect(1)
- var $el = $('
')
+ $(html)
.one('show.bs.modal', function (e) {
e.preventDefault()
$otherBtn.trigger('focus')
@@ -382,10 +401,10 @@ $(function () {
assert.expect(1)
var done = assert.async()
- $('
')
+ $('
')
.on('shown.bs.modal', function () {
- var expectedPadding = $(this).getScrollbarWidth() + 'px'
- var currentPadding = $(this).css('padding-right')
+ var expectedPadding = parseInt($(this).getScrollbarWidth(), 10)
+ var currentPadding = parseInt($(this).css('padding-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'modal padding should be adjusted while opening')
done()
})
@@ -396,18 +415,18 @@ $(function () {
assert.expect(2)
var done = assert.async()
var $body = $(document.body)
- var originalPadding = $body.css('padding-right')
+ var originalPadding = parseInt($body.css('padding-right'), 10)
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
- var currentPadding = $body.css('padding-right')
+ var currentPadding = parseInt($body.css('padding-right'), 10)
assert.strictEqual(currentPadding, originalPadding, 'body padding should be reset after closing')
$body.removeAttr('style')
done()
})
.on('shown.bs.modal', function () {
- var expectedPadding = parseFloat(originalPadding) + $(this).getScrollbarWidth() + 'px'
- var currentPadding = $body.css('padding-right')
+ var expectedPadding = parseInt(originalPadding, 10) + parseInt($(this).getScrollbarWidth(), 10)
+ var currentPadding = parseInt($body.css('padding-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'body padding should be adjusted while opening')
$(this).bootstrapModal('hide')
})
@@ -421,7 +440,7 @@ $(function () {
var originalPadding = '0px'
$body.css('padding-right', originalPadding)
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
assert.strictEqual(document.body.getAttribute('data-padding-right'), null, 'data-padding-right should be cleared after closing')
$body.removeAttr('style')
@@ -444,7 +463,7 @@ $(function () {
$body.css('overflow', 'hidden') // Real scrollbar (for in-browser testing)
$('html').css('padding-right', '0px') // Simulated scrollbar (for PhantomJS)
- $('
')
+ $('
')
.on('shown.bs.modal', function () {
var currentPadding = $body.css('padding-right')
assert.strictEqual(currentPadding, originalPadding, 'body padding should not be adjusted')
@@ -462,18 +481,18 @@ $(function () {
assert.expect(2)
var done = assert.async()
var $element = $('
').appendTo('#qunit-fixture')
- var originalPadding = $element.css('padding-right')
+ var originalPadding = parseInt($element.css('padding-right'), 10)
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
- var currentPadding = $element.css('padding-right')
+ var currentPadding = parseInt($element.css('padding-right'), 10)
assert.strictEqual(currentPadding, originalPadding, 'fixed element padding should be reset after closing')
$element.remove()
done()
})
.on('shown.bs.modal', function () {
- var expectedPadding = parseFloat(originalPadding) + $(this).getScrollbarWidth() + 'px'
- var currentPadding = $element.css('padding-right')
+ var expectedPadding = parseFloat(originalPadding) + parseInt($(this).getScrollbarWidth(), 10)
+ var currentPadding = parseInt($element.css('padding-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'fixed element padding should be adjusted while opening')
$(this).bootstrapModal('hide')
})
@@ -487,7 +506,7 @@ $(function () {
var originalPadding = '0px'
$element.css('padding-right', originalPadding)
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
assert.strictEqual($element[0].getAttribute('data-padding-right'), null, 'data-padding-right should be cleared after closing')
$element.remove()
@@ -504,18 +523,18 @@ $(function () {
assert.expect(2)
var done = assert.async()
var $element = $('
').appendTo('#qunit-fixture')
- var originalPadding = $element.css('margin-right')
+ var originalPadding = parseInt($element.css('margin-right'), 10)
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
- var currentPadding = $element.css('margin-right')
+ var currentPadding = parseInt($element.css('margin-right'), 10)
assert.strictEqual(currentPadding, originalPadding, 'sticky element margin should be reset after closing')
$element.remove()
done()
})
.on('shown.bs.modal', function () {
- var expectedPadding = parseFloat(originalPadding) - $(this).getScrollbarWidth() + 'px'
- var currentPadding = $element.css('margin-right')
+ var expectedPadding = parseFloat(originalPadding) - $(this).getScrollbarWidth()
+ var currentPadding = parseInt($element.css('margin-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'sticky element margin should be adjusted while opening')
$(this).bootstrapModal('hide')
})
@@ -529,7 +548,7 @@ $(function () {
var originalPadding = '0px'
$element.css('margin-right', originalPadding)
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
assert.strictEqual($element[0].getAttribute('data-margin-right'), null, 'data-margin-right should be cleared after closing')
$element.remove()
@@ -548,7 +567,7 @@ $(function () {
var $body = $(document.body)
var $style = $('').appendTo('head')
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
assert.strictEqual($body.css('padding-left'), '0px', 'body does not have inline padding set')
$style.remove()
@@ -568,7 +587,7 @@ $(function () {
$body.css('color', 'red')
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
assert.strictEqual($body[0].style.paddingRight, '', 'body does not have inline padding set')
assert.strictEqual($body[0].style.color, 'red', 'body still has other inline styles set')
@@ -589,7 +608,7 @@ $(function () {
$body.css('padding-right', '5%')
- $('
')
+ $('
')
.on('hidden.bs.modal', function () {
assert.strictEqual($body[0].style.paddingRight, '5%', 'body does not have inline padding set')
$body.removeAttr('style')
@@ -607,7 +626,15 @@ $(function () {
$('
')
.appendTo('#qunit-fixture')
- $('
')
+ var modalHtml = [
+ '
'
+ ].join('')
+
+ $(modalHtml)
.appendTo('#qunit-fixture')
// We need to use CustomEvent here to have a working preventDefault in IE tests.
@@ -630,7 +657,7 @@ $(function () {
var done = assert.async()
var count = 0
- $('
').on('shown.bs.modal', function () {
+ $('
').on('shown.bs.modal', function () {
count++
}).on('hidden.bs.modal', function () {
assert.strictEqual(count, 1, 'show() runs only once')