From dfa017adc382c63766cd5d021bdc8f6ad1b04932 Mon Sep 17 00:00:00 2001 From: ysds <ysds.code@gmail.com> Date: Wed, 4 Mar 2020 23:51:15 +0900 Subject: [PATCH] Always modal scroll top to 0 --- js/src/modal.js | 6 ++---- js/tests/unit/modal.spec.js | 16 ++++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/js/src/modal.js b/js/src/modal.js index ca77359cab..d5f1c8c9ae 100644 --- a/js/src/modal.js +++ b/js/src/modal.js @@ -60,7 +60,6 @@ const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}` const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}` const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` -const CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable' const CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure' const CLASS_NAME_BACKDROP = 'modal-backdrop' const CLASS_NAME_OPEN = 'modal-open' @@ -249,11 +248,10 @@ class Modal { this._element.style.display = 'block' this._element.removeAttribute('aria-hidden') this._element.setAttribute('aria-modal', true) + this._element.scrollTop = 0 - if (this._dialog.classList.contains(CLASS_NAME_SCROLLABLE) && modalBody) { + if (modalBody) { modalBody.scrollTop = 0 - } else { - this._element.scrollTop = 0 } if (transition) { diff --git a/js/tests/unit/modal.spec.js b/js/tests/unit/modal.spec.js index c5fbc3a273..52676844f4 100644 --- a/js/tests/unit/modal.spec.js +++ b/js/tests/unit/modal.spec.js @@ -382,40 +382,40 @@ describe('Modal', () => { modal.show() }) - it('should set modal body scroll top to 0 if .modal-dialog-scrollable', done => { + it('should set .modal\'s scroll top to 0', done => { fixtureEl.innerHTML = [ '<div class="modal fade">', - ' <div class="modal-dialog modal-dialog-scrollable">', - ' <div class="modal-body"></div>', + ' <div class="modal-dialog">', ' </div>', '</div>' ].join('') const modalEl = fixtureEl.querySelector('.modal') - const modalBody = modalEl.querySelector('.modal-body') const modal = new Modal(modalEl) modalEl.addEventListener('shown.bs.modal', () => { - expect(modalBody.scrollTop).toEqual(0) + expect(modalEl.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 => { + it('should set modal body scroll top to 0 if modal body do not exists', done => { fixtureEl.innerHTML = [ '<div class="modal fade">', - ' <div class="modal-dialog modal-dialog-scrollable">', + ' <div class="modal-dialog">', + ' <div class="modal-body"></div>', ' </div>', '</div>' ].join('') const modalEl = fixtureEl.querySelector('.modal') + const modalBody = modalEl.querySelector('.modal-body') const modal = new Modal(modalEl) modalEl.addEventListener('shown.bs.modal', () => { - expect(modalEl.scrollTop).toEqual(0) + expect(modalBody.scrollTop).toEqual(0) done() }) -- GitLab