allow dynamic modal body for scrollable modals
This commit is contained in:
Johann-S 2019-07-28 12:19:00 +02:00 committed by XhmikosR
parent 8f95b26d65
commit e4d4c5d0bc
2 changed files with 24 additions and 2 deletions

View File

@ -236,6 +236,7 @@ class Modal {
_showElement(relatedTarget) {
const transition = $(this._element).hasClass(ClassName.FADE)
const modalBody = this._dialog ? this._dialog.querySelector(Selector.MODAL_BODY) : null
if (!this._element.parentNode ||
this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
@ -247,8 +248,8 @@ class Modal {
this._element.removeAttribute('aria-hidden')
this._element.setAttribute('aria-modal', true)
if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {
this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0
if ($(this._dialog).hasClass(ClassName.SCROLLABLE) && modalBody) {
modalBody.scrollTop = 0
} else {
this._element.scrollTop = 0
}

View File

@ -812,4 +812,25 @@ $(function () {
})
.bootstrapModal('show')
})
QUnit.test('should set .modal\'s scroll top to 0 if .modal-dialog-scrollable and modal body do not exists', function (assert) {
assert.expect(1)
var done = assert.async()
var $modal = $([
'<div id="modal-test">',
' <div class="modal-dialog modal-dialog-scrollable">',
' <div class="modal-content">',
' </div>',
' </div>',
'</div>'
].join('')).appendTo('#qunit-fixture')
$modal.on('shown.bs.modal', function () {
assert.strictEqual($modal.scrollTop(), 0)
done()
})
.bootstrapModal('show')
})
})