0
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-02-28 00:54:30 +01:00

minor jQuery.hasclass removal (#28158)

This commit is contained in:
Joshua Wilson 2019-02-11 08:15:03 -05:00 committed by XhmikosR
parent 62277bc58e
commit fdbb5db919
2 changed files with 76 additions and 49 deletions

View File

@ -245,7 +245,7 @@ class Modal {
this._element.removeAttribute('aria-hidden') this._element.removeAttribute('aria-hidden')
this._element.setAttribute('aria-modal', true) 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 this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0
} else { } else {
this._element.scrollTop = 0 this._element.scrollTop = 0

View File

@ -41,7 +41,7 @@ $(function () {
QUnit.test('should throw explicit error on undefined method', function (assert) { QUnit.test('should throw explicit error on undefined method', function (assert) {
assert.expect(1) assert.expect(1)
var $el = $('<div id="modal-test"/>') var $el = $('<div id="modal-test"><div class="modal-dialog" /></div>')
$el.bootstrapModal() $el.bootstrapModal()
try { try {
$el.bootstrapModal('noMethod') $el.bootstrapModal('noMethod')
@ -52,7 +52,7 @@ $(function () {
QUnit.test('should return jquery collection containing the element', function (assert) { QUnit.test('should return jquery collection containing the element', function (assert) {
assert.expect(2) assert.expect(2)
var $el = $('<div id="modal-test"/>') var $el = $('<div id="modal-test"><div class="modal-dialog" /></div>')
var $modal = $el.bootstrapModal() var $modal = $el.bootstrapModal()
assert.ok($modal instanceof $, 'returns jquery collection') assert.ok($modal instanceof $, 'returns jquery collection')
assert.strictEqual($modal[0], $el[0], 'collection contains element') assert.strictEqual($modal[0], $el[0], 'collection contains element')
@ -67,7 +67,7 @@ $(function () {
assert.expect(1) assert.expect(1)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom')
done() done()
@ -79,7 +79,7 @@ $(function () {
assert.expect(1) assert.expect(1)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('show.bs.modal', function () { .on('show.bs.modal', function () {
assert.ok(true, 'show event fired') assert.ok(true, 'show event fired')
done() done()
@ -91,7 +91,7 @@ $(function () {
assert.expect(1) assert.expect(1)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('show.bs.modal', function (e) { .on('show.bs.modal', function (e) {
e.preventDefault() e.preventDefault()
assert.ok(true, 'show event fired') assert.ok(true, 'show event fired')
@ -107,7 +107,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').is(':visible'), 'modal visible') assert.ok($('#modal-test').is(':visible'), 'modal visible')
assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom')
@ -124,7 +124,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').is(':visible'), 'modal visible') assert.ok($('#modal-test').is(':visible'), 'modal visible')
assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom')
@ -140,8 +140,7 @@ $(function () {
QUnit.test('should remove from dom when click [data-dismiss="modal"]', function (assert) { QUnit.test('should remove from dom when click [data-dismiss="modal"]', function (assert) {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"><div class="modal-dialog" /><span class="close" data-dismiss="modal"/></div>')
$('<div id="modal-test"><span class="close" data-dismiss="modal"/></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').is(':visible'), 'modal visible') assert.ok($('#modal-test').is(':visible'), 'modal visible')
assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom')
@ -158,7 +157,7 @@ $(function () {
assert.expect(2) assert.expect(2)
var done = assert.async() var done = assert.async()
$('<div id="modal-test" data-backdrop="false"/>') $('<div id="modal-test" data-backdrop="false"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').is(':visible'), 'modal visible') assert.ok($('#modal-test').is(':visible'), 'modal visible')
$(this).bootstrapModal('hide') $(this).bootstrapModal('hide')
@ -174,7 +173,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"><div class="contents"/></div>') $('<div id="modal-test"><div class="modal-dialog" /><div class="contents"/></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom')
$('.contents').trigger('click') $('.contents').trigger('click')
@ -192,7 +191,7 @@ $(function () {
assert.expect(1) assert.expect(1)
var done = assert.async() var done = assert.async()
$('<div id="modal-test" data-backdrop="false"><div class="contents"/></div>') $('<div id="modal-test" data-backdrop="false"><div class="modal-dialog" /><div class="contents"/></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
$('#modal-test').trigger('click') $('#modal-test').trigger('click')
assert.ok($('#modal-test').is(':visible'), 'modal not hidden') assert.ok($('#modal-test').is(':visible'), 'modal not hidden')
@ -205,7 +204,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
var $div = $('<div id="modal-test"/>') var $div = $('<div id="modal-test"><div class="modal-dialog" /></div>')
$div $div
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').length, 'modal inserted into dom') assert.ok($('#modal-test').length, 'modal inserted into dom')
@ -230,7 +229,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
var $div = $('<div id="modal-test"/>') var $div = $('<div id="modal-test"><div class="modal-dialog" /></div>')
$div $div
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').length, 'modal inserted into dom') assert.ok($('#modal-test').length, 'modal inserted into dom')
@ -254,7 +253,7 @@ $(function () {
var triggered var triggered
$('<div id="modal-test"><div class="contents"/></div>') $('<div id="modal-test"><div class="modal-dialog" /><div class="contents"/></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
triggered = 0 triggered = 0
$('#modal-test').trigger('click') $('#modal-test').trigger('click')
@ -271,7 +270,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
$('<div id="modal-test" aria-hidden="true"/>') $('<div id="modal-test" aria-hidden="true"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.notOk($('#modal-test').is('[aria-hidden]'), 'aria-hidden attribute removed') assert.notOk($('#modal-test').is('[aria-hidden]'), 'aria-hidden attribute removed')
$(this).bootstrapModal('hide') $(this).bootstrapModal('hide')
@ -288,7 +287,7 @@ $(function () {
assert.expect(3) assert.expect(3)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
assert.ok($('#modal-test').is('[aria-modal]'), 'aria-modal attribute added') assert.ok($('#modal-test').is('[aria-modal]'), 'aria-modal attribute added')
assert.strictEqual($('#modal-test').attr('aria-modal'), 'true', 'correct aria-modal="true" added') assert.strictEqual($('#modal-test').attr('aria-modal'), 'true', 'correct aria-modal="true" added')
@ -304,8 +303,15 @@ $(function () {
QUnit.test('should close reopened modal with [data-dismiss="modal"] click', function (assert) { QUnit.test('should close reopened modal with [data-dismiss="modal"] click', function (assert) {
assert.expect(2) assert.expect(2)
var done = assert.async() var done = assert.async()
var html = [
'<div id="modal-test">',
' <div class="modal-dialog">',
' <div class="contents"><div id="close" data-dismiss="modal"/></div>',
' </div>',
'</div>'
].join('')
$('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div></div>') $(html)
.one('shown.bs.modal', function () { .one('shown.bs.modal', function () {
$('#close').trigger('click') $('#close').trigger('click')
}) })
@ -332,10 +338,16 @@ $(function () {
QUnit.test('should restore focus to toggling element when modal is hidden after having been opened via data-api', function (assert) { QUnit.test('should restore focus to toggling element when modal is hidden after having been opened via data-api', function (assert) {
assert.expect(1) assert.expect(1)
var done = assert.async() var done = assert.async()
var $toggleBtn = $('<button data-toggle="modal" data-target="#modal-test"/>').appendTo('#qunit-fixture') var $toggleBtn = $('<button data-toggle="modal" data-target="#modal-test"/>').appendTo('#qunit-fixture')
var html = [
'<div id="modal-test">',
' <div class="modal-dialog">',
' <div class="contents"><div id="close" data-dismiss="modal"/></div>',
' </div>',
'</div>'
].join('')
$('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div></div>') $(html)
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
setTimeout(function () { setTimeout(function () {
assert.ok($(document.activeElement).is($toggleBtn), 'toggling element is once again focused') assert.ok($(document.activeElement).is($toggleBtn), 'toggling element is once again focused')
@ -355,8 +367,15 @@ $(function () {
var done = assert.async() var done = assert.async()
var $toggleBtn = $('<button data-toggle="modal" data-target="#modal-test"/>').appendTo('#qunit-fixture') var $toggleBtn = $('<button data-toggle="modal" data-target="#modal-test"/>').appendTo('#qunit-fixture')
var $otherBtn = $('<button id="other-btn"/>').appendTo('#qunit-fixture') var $otherBtn = $('<button id="other-btn"/>').appendTo('#qunit-fixture')
var html = [
'<div id="modal-test">',
' <div class="modal-dialog">',
' <div class="contents"><div id="close" data-dismiss="modal"/></div>',
' </div>',
'</div>'
].join('')
$('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div>') $(html)
.one('show.bs.modal', function (e) { .one('show.bs.modal', function (e) {
e.preventDefault() e.preventDefault()
$otherBtn.trigger('focus') $otherBtn.trigger('focus')
@ -382,10 +401,10 @@ $(function () {
assert.expect(1) assert.expect(1)
var done = assert.async() var done = assert.async()
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
var expectedPadding = $(this).getScrollbarWidth() + 'px' var expectedPadding = parseInt($(this).getScrollbarWidth(), 10)
var currentPadding = $(this).css('padding-right') var currentPadding = parseInt($(this).css('padding-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'modal padding should be adjusted while opening') assert.strictEqual(currentPadding, expectedPadding, 'modal padding should be adjusted while opening')
done() done()
}) })
@ -396,18 +415,18 @@ $(function () {
assert.expect(2) assert.expect(2)
var done = assert.async() var done = assert.async()
var $body = $(document.body) var $body = $(document.body)
var originalPadding = $body.css('padding-right') var originalPadding = parseInt($body.css('padding-right'), 10)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .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') assert.strictEqual(currentPadding, originalPadding, 'body padding should be reset after closing')
$body.removeAttr('style') $body.removeAttr('style')
done() done()
}) })
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
var expectedPadding = parseFloat(originalPadding) + $(this).getScrollbarWidth() + 'px' var expectedPadding = parseInt(originalPadding, 10) + parseInt($(this).getScrollbarWidth(), 10)
var currentPadding = $body.css('padding-right') var currentPadding = parseInt($body.css('padding-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'body padding should be adjusted while opening') assert.strictEqual(currentPadding, expectedPadding, 'body padding should be adjusted while opening')
$(this).bootstrapModal('hide') $(this).bootstrapModal('hide')
}) })
@ -421,7 +440,7 @@ $(function () {
var originalPadding = '0px' var originalPadding = '0px'
$body.css('padding-right', originalPadding) $body.css('padding-right', originalPadding)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
assert.strictEqual(document.body.getAttribute('data-padding-right'), null, 'data-padding-right should be cleared after closing') assert.strictEqual(document.body.getAttribute('data-padding-right'), null, 'data-padding-right should be cleared after closing')
$body.removeAttr('style') $body.removeAttr('style')
@ -444,7 +463,7 @@ $(function () {
$body.css('overflow', 'hidden') // Real scrollbar (for in-browser testing) $body.css('overflow', 'hidden') // Real scrollbar (for in-browser testing)
$('html').css('padding-right', '0px') // Simulated scrollbar (for PhantomJS) $('html').css('padding-right', '0px') // Simulated scrollbar (for PhantomJS)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
var currentPadding = $body.css('padding-right') var currentPadding = $body.css('padding-right')
assert.strictEqual(currentPadding, originalPadding, 'body padding should not be adjusted') assert.strictEqual(currentPadding, originalPadding, 'body padding should not be adjusted')
@ -462,18 +481,18 @@ $(function () {
assert.expect(2) assert.expect(2)
var done = assert.async() var done = assert.async()
var $element = $('<div class="fixed-top"></div>').appendTo('#qunit-fixture') var $element = $('<div class="fixed-top"></div>').appendTo('#qunit-fixture')
var originalPadding = $element.css('padding-right') var originalPadding = parseInt($element.css('padding-right'), 10)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .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') assert.strictEqual(currentPadding, originalPadding, 'fixed element padding should be reset after closing')
$element.remove() $element.remove()
done() done()
}) })
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
var expectedPadding = parseFloat(originalPadding) + $(this).getScrollbarWidth() + 'px' var expectedPadding = parseFloat(originalPadding) + parseInt($(this).getScrollbarWidth(), 10)
var currentPadding = $element.css('padding-right') var currentPadding = parseInt($element.css('padding-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'fixed element padding should be adjusted while opening') assert.strictEqual(currentPadding, expectedPadding, 'fixed element padding should be adjusted while opening')
$(this).bootstrapModal('hide') $(this).bootstrapModal('hide')
}) })
@ -487,7 +506,7 @@ $(function () {
var originalPadding = '0px' var originalPadding = '0px'
$element.css('padding-right', originalPadding) $element.css('padding-right', originalPadding)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
assert.strictEqual($element[0].getAttribute('data-padding-right'), null, 'data-padding-right should be cleared after closing') assert.strictEqual($element[0].getAttribute('data-padding-right'), null, 'data-padding-right should be cleared after closing')
$element.remove() $element.remove()
@ -504,18 +523,18 @@ $(function () {
assert.expect(2) assert.expect(2)
var done = assert.async() var done = assert.async()
var $element = $('<div class="sticky-top"></div>').appendTo('#qunit-fixture') var $element = $('<div class="sticky-top"></div>').appendTo('#qunit-fixture')
var originalPadding = $element.css('margin-right') var originalPadding = parseInt($element.css('margin-right'), 10)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .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') assert.strictEqual(currentPadding, originalPadding, 'sticky element margin should be reset after closing')
$element.remove() $element.remove()
done() done()
}) })
.on('shown.bs.modal', function () { .on('shown.bs.modal', function () {
var expectedPadding = parseFloat(originalPadding) - $(this).getScrollbarWidth() + 'px' var expectedPadding = parseFloat(originalPadding) - $(this).getScrollbarWidth()
var currentPadding = $element.css('margin-right') var currentPadding = parseInt($element.css('margin-right'), 10)
assert.strictEqual(currentPadding, expectedPadding, 'sticky element margin should be adjusted while opening') assert.strictEqual(currentPadding, expectedPadding, 'sticky element margin should be adjusted while opening')
$(this).bootstrapModal('hide') $(this).bootstrapModal('hide')
}) })
@ -529,7 +548,7 @@ $(function () {
var originalPadding = '0px' var originalPadding = '0px'
$element.css('margin-right', originalPadding) $element.css('margin-right', originalPadding)
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
assert.strictEqual($element[0].getAttribute('data-margin-right'), null, 'data-margin-right should be cleared after closing') assert.strictEqual($element[0].getAttribute('data-margin-right'), null, 'data-margin-right should be cleared after closing')
$element.remove() $element.remove()
@ -548,7 +567,7 @@ $(function () {
var $body = $(document.body) var $body = $(document.body)
var $style = $('<style>body { padding-right: 42px; }</style>').appendTo('head') var $style = $('<style>body { padding-right: 42px; }</style>').appendTo('head')
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
assert.strictEqual($body.css('padding-left'), '0px', 'body does not have inline padding set') assert.strictEqual($body.css('padding-left'), '0px', 'body does not have inline padding set')
$style.remove() $style.remove()
@ -568,7 +587,7 @@ $(function () {
$body.css('color', 'red') $body.css('color', 'red')
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
assert.strictEqual($body[0].style.paddingRight, '', 'body does not have inline padding set') 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') assert.strictEqual($body[0].style.color, 'red', 'body still has other inline styles set')
@ -589,7 +608,7 @@ $(function () {
$body.css('padding-right', '5%') $body.css('padding-right', '5%')
$('<div id="modal-test"/>') $('<div id="modal-test"><div class="modal-dialog" /></div>')
.on('hidden.bs.modal', function () { .on('hidden.bs.modal', function () {
assert.strictEqual($body[0].style.paddingRight, '5%', 'body does not have inline padding set') assert.strictEqual($body[0].style.paddingRight, '5%', 'body does not have inline padding set')
$body.removeAttr('style') $body.removeAttr('style')
@ -607,7 +626,15 @@ $(function () {
$('<map><area id="test" shape="default" data-toggle="modal" data-target="#modal-test" href="demo.html"/></map>') $('<map><area id="test" shape="default" data-toggle="modal" data-target="#modal-test" href="demo.html"/></map>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
$('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div></div>') var modalHtml = [
'<div id="modal-test">',
' <div class="modal-dialog">',
' <div class="contents"><div id="close" data-dismiss="modal"/></div>',
' </div>',
'</div>'
].join('')
$(modalHtml)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
// We need to use CustomEvent here to have a working preventDefault in IE tests. // We need to use CustomEvent here to have a working preventDefault in IE tests.
@ -630,7 +657,7 @@ $(function () {
var done = assert.async() var done = assert.async()
var count = 0 var count = 0
$('<div id="modal-test"/>').on('shown.bs.modal', function () { $('<div id="modal-test"><div class="modal-dialog" /></div>').on('shown.bs.modal', function () {
count++ count++
}).on('hidden.bs.modal', function () { }).on('hidden.bs.modal', function () {
assert.strictEqual(count, 1, 'show() runs only once') assert.strictEqual(count, 1, 'show() runs only once')