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

Offcanvas.js: If scroll is allowed, should allow focus on other elements (#33677)

This commit is contained in:
GeoSot 2021-04-20 08:32:52 +03:00 committed by GitHub
parent 0bbe45cd97
commit 079f2cd90c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 1 deletions

View File

@ -112,6 +112,7 @@ class Offcanvas extends BaseComponent {
if (!this._config.scroll) {
scrollBarHide()
this._enforceFocusOnElement(this._element)
}
this._element.removeAttribute('aria-hidden')
@ -121,7 +122,6 @@ class Offcanvas extends BaseComponent {
const completeCallBack = () => {
EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })
this._enforceFocusOnElement(this._element)
}
const transitionDuration = getTransitionDurationFromElement(this._element)

View File

@ -220,6 +220,24 @@ describe('Offcanvas', () => {
offCanvas.show()
})
it('should not enforce focus if focus scroll is allowed', done => {
fixtureEl.innerHTML = '<div class="offcanvas"></div>'
const offCanvasEl = fixtureEl.querySelector('.offcanvas')
const offCanvas = new Offcanvas(offCanvasEl, {
scroll: true
})
spyOn(offCanvas, '_enforceFocusOnElement')
offCanvasEl.addEventListener('shown.bs.offcanvas', () => {
expect(offCanvas._enforceFocusOnElement).not.toHaveBeenCalled()
done()
})
offCanvas.show()
})
})
describe('toggle', () => {
@ -328,6 +346,22 @@ describe('Offcanvas', () => {
expect(instance).not.toBeNull()
expect(Offcanvas.prototype.show).toHaveBeenCalled()
})
it('should enforce focus', done => {
fixtureEl.innerHTML = '<div class="offcanvas"></div>'
const offCanvasEl = fixtureEl.querySelector('.offcanvas')
const offCanvas = new Offcanvas(offCanvasEl)
spyOn(offCanvas, '_enforceFocusOnElement')
offCanvasEl.addEventListener('shown.bs.offcanvas', () => {
expect(offCanvas._enforceFocusOnElement).toHaveBeenCalled()
done()
})
offCanvas.show()
})
})
describe('hide', () => {