Commit dfa017ad authored by ysds's avatar ysds Committed by XhmikosR
Browse files

Always modal scroll top to 0

parent 05fb3905
1 merge request!31948Examples/Floating-labels: fix bad behavior with autofill
Showing with 10 additions and 12 deletions
+10 -12
...@@ -60,7 +60,6 @@ const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}` ...@@ -60,7 +60,6 @@ const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`
const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}` const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_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_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'
const CLASS_NAME_BACKDROP = 'modal-backdrop' const CLASS_NAME_BACKDROP = 'modal-backdrop'
const CLASS_NAME_OPEN = 'modal-open' const CLASS_NAME_OPEN = 'modal-open'
...@@ -249,11 +248,10 @@ class Modal { ...@@ -249,11 +248,10 @@ class Modal {
this._element.style.display = 'block' this._element.style.display = 'block'
this._element.removeAttribute('aria-hidden') this._element.removeAttribute('aria-hidden')
this._element.setAttribute('aria-modal', true) this._element.setAttribute('aria-modal', true)
this._element.scrollTop = 0
if (this._dialog.classList.contains(CLASS_NAME_SCROLLABLE) && modalBody) { if (modalBody) {
modalBody.scrollTop = 0 modalBody.scrollTop = 0
} else {
this._element.scrollTop = 0
} }
if (transition) { if (transition) {
......
...@@ -382,40 +382,40 @@ describe('Modal', () => { ...@@ -382,40 +382,40 @@ describe('Modal', () => {
modal.show() 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 = [ fixtureEl.innerHTML = [
'<div class="modal fade">', '<div class="modal fade">',
' <div class="modal-dialog modal-dialog-scrollable">', ' <div class="modal-dialog">',
' <div class="modal-body"></div>',
' </div>', ' </div>',
'</div>' '</div>'
].join('') ].join('')
const modalEl = fixtureEl.querySelector('.modal') const modalEl = fixtureEl.querySelector('.modal')
const modalBody = modalEl.querySelector('.modal-body')
const modal = new Modal(modalEl) const modal = new Modal(modalEl)
modalEl.addEventListener('shown.bs.modal', () => { modalEl.addEventListener('shown.bs.modal', () => {
expect(modalBody.scrollTop).toEqual(0) expect(modalEl.scrollTop).toEqual(0)
done() done()
}) })
modal.show() 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 = [ fixtureEl.innerHTML = [
'<div class="modal fade">', '<div class="modal fade">',
' <div class="modal-dialog modal-dialog-scrollable">', ' <div class="modal-dialog">',
' <div class="modal-body"></div>',
' </div>', ' </div>',
'</div>' '</div>'
].join('') ].join('')
const modalEl = fixtureEl.querySelector('.modal') const modalEl = fixtureEl.querySelector('.modal')
const modalBody = modalEl.querySelector('.modal-body')
const modal = new Modal(modalEl) const modal = new Modal(modalEl)
modalEl.addEventListener('shown.bs.modal', () => { modalEl.addEventListener('shown.bs.modal', () => {
expect(modalEl.scrollTop).toEqual(0) expect(modalBody.scrollTop).toEqual(0)
done() done()
}) })
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment