diff options
author | Jann Westermann <github@jann.bayern> | 2022-03-02 03:20:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-02 03:20:37 +0300 |
commit | 8d7358f23131a04762af95b88d045fde0627c79f (patch) | |
tree | e7b9a55ba4dfe88dcfd5987939a1d341c1c81563 /js/tests/unit/offcanvas.spec.js | |
parent | d788d2efac79bfe84bba46db6574534f111fcece (diff) |
Add static backdrop to offcanvas (#35832)
* Add static backdrop option, to offcanvas
* Trigger prevented event on esc with keyboard=false
* Change offcanvas doc , moving backdrop examples to examples section
Diffstat (limited to 'js/tests/unit/offcanvas.spec.js')
-rw-r--r-- | js/tests/unit/offcanvas.spec.js | 71 |
1 files changed, 61 insertions, 10 deletions
diff --git a/js/tests/unit/offcanvas.spec.js b/js/tests/unit/offcanvas.spec.js index 37f3397c79..a98a8c13e3 100644 --- a/js/tests/unit/offcanvas.spec.js +++ b/js/tests/unit/offcanvas.spec.js @@ -74,6 +74,21 @@ describe('Offcanvas', () => { expect(offCanvas.hide).toHaveBeenCalled() }) + it('should hide if esc is pressed and backdrop is static', () => { + fixtureEl.innerHTML = '<div class="offcanvas"></div>' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { backdrop: 'static' }) + const keyDownEsc = createEvent('keydown') + keyDownEsc.key = 'Escape' + + spyOn(offCanvas, 'hide') + + offCanvasEl.dispatchEvent(keyDownEsc) + + expect(offCanvas.hide).toHaveBeenCalled() + }) + it('should not hide if esc is not pressed', () => { fixtureEl.innerHTML = '<div class="offcanvas"></div>' @@ -84,25 +99,61 @@ describe('Offcanvas', () => { spyOn(offCanvas, 'hide') - document.dispatchEvent(keydownTab) + offCanvasEl.dispatchEvent(keydownTab) expect(offCanvas.hide).not.toHaveBeenCalled() }) it('should not hide if esc is pressed but with keyboard = false', () => { - fixtureEl.innerHTML = '<div class="offcanvas"></div>' + return new Promise(resolve => { + fixtureEl.innerHTML = '<div class="offcanvas"></div>' - const offCanvasEl = fixtureEl.querySelector('.offcanvas') - const offCanvas = new Offcanvas(offCanvasEl, { keyboard: false }) - const keyDownEsc = createEvent('keydown') - keyDownEsc.key = 'Escape' + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { keyboard: false }) + const keyDownEsc = createEvent('keydown') + keyDownEsc.key = 'Escape' - spyOn(offCanvas, 'hide') + spyOn(offCanvas, 'hide') + const hidePreventedSpy = jasmine.createSpy('hidePrevented') + offCanvasEl.addEventListener('hidePrevented.bs.offcanvas', hidePreventedSpy) - document.dispatchEvent(keyDownEsc) + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvas._config.keyboard).toBeFalse() + offCanvasEl.dispatchEvent(keyDownEsc) - expect(offCanvas._config.keyboard).toBeFalse() - expect(offCanvas.hide).not.toHaveBeenCalled() + expect(hidePreventedSpy).toHaveBeenCalled() + expect(offCanvas.hide).not.toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + + it('should not hide if user clicks on static backdrop', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '<div class="offcanvas"></div>' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl, { backdrop: 'static' }) + + const clickEvent = new Event('mousedown', { bubbles: true, cancelable: true }) + spyOn(offCanvas._backdrop._config, 'clickCallback').and.callThrough() + spyOn(offCanvas._backdrop, 'hide').and.callThrough() + const hidePreventedSpy = jasmine.createSpy('hidePrevented') + offCanvasEl.addEventListener('hidePrevented.bs.offcanvas', hidePreventedSpy) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvas._backdrop._config.clickCallback).toEqual(jasmine.any(Function)) + + offCanvas._backdrop._getElement().dispatchEvent(clickEvent) + expect(hidePreventedSpy).toHaveBeenCalled() + expect(offCanvas._backdrop.hide).not.toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) }) }) |