_showElement(relatedTarget) {
const transition = this._element.classList.contains(ClassName.FADE)
+ const modalBody = SelectorEngine.findOne(Selector.MODAL_BODY, this._dialog)
if (!this._element.parentNode ||
this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
this._element.removeAttribute('aria-hidden')
this._element.setAttribute('aria-modal', true)
- if (this._dialog.classList.contains(ClassName.SCROLLABLE)) {
- SelectorEngine.findOne(Selector.MODAL_BODY, this._dialog).scrollTop = 0
+ if (this._dialog.classList.contains(ClassName.SCROLLABLE) && modalBody) {
+ modalBody.scrollTop = 0
} else {
this._element.scrollTop = 0
}
const modalBody = modalEl.querySelector('.modal-body')
const modal = new Modal(modalEl)
- spyOn(modal, 'hide').and.callThrough()
-
modalEl.addEventListener('shown.bs.modal', () => {
expect(modalBody.scrollTop).toEqual(0)
done()
modal.show()
})
+ it('should set .modal\'s scroll top to 0 if .modal-dialog-scrollable and modal body do not exists', done => {
+ fixtureEl.innerHTML = [
+ '<div class="modal fade">',
+ ' <div class="modal-dialog modal-dialog-scrollable">',
+ ' </div>',
+ '</div>'
+ ].join('')
+
+ const modalEl = fixtureEl.querySelector('.modal')
+ const modal = new Modal(modalEl)
+
+ modalEl.addEventListener('shown.bs.modal', () => {
+ expect(modalEl.scrollTop).toEqual(0)
+ done()
+ })
+
+ modal.show()
+ })
+
it('should not enforce focus if focus equal to false', done => {
fixtureEl.innerHTML = '<div class="modal fade"><div class="modal-dialog" /></div>'