describe('nextWhenVisible', () => {
it('should not call next when the page is not visible', () => {
- fixtureEl.innerHTML = '<div class="carousel" data-interval="false"></div>'
+ fixtureEl.innerHTML = [
+ '<div style="display: none;">',
+ ' <div class="carousel" data-interval="false"></div>',
+ '</div>'
+ ].join('')
- const carouselEl = fixtureEl.querySelector('div')
+ const carouselEl = fixtureEl.querySelector('.carousel')
const carousel = new Carousel(carouselEl)
spyOn(carousel, 'next')
'</div>'
].join('')
- // the element must be displayed, without that activeElement won't change
- fixtureEl.style.display = 'block'
-
const triggerDropdown = fixtureEl.querySelector('[data-toggle="dropdown"]')
const dropdown = fixtureEl.querySelector('.dropdown')
const input = fixtureEl.querySelector('input')
textarea.dispatchEvent(keyDown)
expect(document.activeElement).toEqual(textarea, 'textarea still focused')
- fixtureEl.style.display = 'none'
done()
})
const triggerDropdown = fixtureEl.querySelector('[data-toggle="dropdown"]')
const dropdown = fixtureEl.querySelector('.dropdown')
- // the element must be displayed, without that activeElement won't change
- fixtureEl.style.display = 'block'
-
dropdown.addEventListener('shown.bs.dropdown', () => {
const keyDown = createEvent('keydown')
keyDown.which = 40
expect(document.activeElement.classList.contains('disabled')).toEqual(false, '.disabled not focused')
expect(document.activeElement.hasAttribute('disabled')).toEqual(false, ':disabled not focused')
- fixtureEl.style.display = 'none'
done()
})
const item1 = fixtureEl.querySelector('#item1')
const item2 = fixtureEl.querySelector('#item2')
- // the element must be displayed, without that activeElement won't change
- fixtureEl.style.display = 'block'
-
dropdown.addEventListener('shown.bs.dropdown', () => {
const keyDown40 = createEvent('keydown')
keyDown40.which = 40
document.activeElement.dispatchEvent(keyDown38)
expect(document.activeElement).toEqual(item1, 'item1 is focused')
- fixtureEl.style.display = 'none'
done()
})
'</div>'
].join('')
- // the element must be displayed, without that activeElement won't change
- fixtureEl.style.display = 'block'
-
const triggerDropdown = fixtureEl.querySelector('[data-toggle="dropdown"]')
const dropdown = fixtureEl.querySelector('.dropdown')
const input = fixtureEl.querySelector('input')
input.dispatchEvent(keyDownEscape)
expect(dropdown.classList.contains('show')).toEqual(false, 'dropdown menu is not shown')
- fixtureEl.style.display = 'none'
done()
})
'<div id="exampleModal" class="modal"><div class="modal-dialog" /></div>'
].join('')
- // the element must be displayed, without that activeElement won't change
- fixtureEl.style.display = 'block'
-
const modalEl = fixtureEl.querySelector('.modal')
const trigger = fixtureEl.querySelector('[data-toggle="modal"]')
const hideListener = () => {
setTimeout(() => {
expect(trigger.focus).toHaveBeenCalled()
- fixtureEl.style.display = 'none'
done()
}, 20)
}
it('should not focus the trigger if the modal is not visible', done => {
fixtureEl.innerHTML = [
- '<a data-toggle="modal" href="#" data-target="#exampleModal"></a>',
- '<div id="exampleModal" class="modal"><div class="modal-dialog" /></div>'
+ '<a data-toggle="modal" href="#" data-target="#exampleModal" style="display: none;"></a>',
+ '<div id="exampleModal" class="modal" style="display: none;"><div class="modal-dialog" /></div>'
].join('')
const modalEl = fixtureEl.querySelector('.modal')
})
afterEach(() => {
- fixtureEl.style.display = 'none'
clearFixture()
})
'</div>'
].join('')
- fixtureEl.style.display = 'block'
const scrollSpy = new ScrollSpy(fixtureEl.querySelector('#content'), {
target: '#navigation'
})
'</div>'
].join('')
- fixtureEl.style.display = 'block'
const scrollSpyEl = fixtureEl.querySelector('#scrollspy-example')
const rootEl = fixtureEl.querySelector('#root')
const scrollSpy = new ScrollSpy(scrollSpyEl, {
done()
})
- fixtureEl.style.display = 'block'
scrollSpyEl.scrollTop = 350
})
'</div>'
].join('')
- fixtureEl.style.display = 'block'
const contentEl = fixtureEl.querySelector('#content')
const scrollSpy = new ScrollSpy(contentEl, {
target: '#navigation',
'</div>'
].join('')
- fixtureEl.style.display = 'block'
const contentEl = fixtureEl.querySelector('.content')
const scrollSpy = new ScrollSpy(contentEl, {
offset: 0,
'</div>'
].join('')
- fixtureEl.style.display = 'block'
const contentEl = fixtureEl.querySelector('.content')
const scrollSpy = new ScrollSpy(contentEl, {
offset: 0,
'</div>'
].join('')
- fixtureEl.style.display = 'block'
const contentEl = fixtureEl.querySelector('.content')
const scrollSpy = new ScrollSpy(contentEl, {
offset: 0,
'</div>'
].join('')
- fixtureEl.style.display = 'block'
-
const contentEl = fixtureEl.querySelector('#content')
const scrollSpy = new ScrollSpy(contentEl, {
target: '#navigation',
'</div>'
].join('')
- fixtureEl.style.display = 'block'
-
const negativeHeight = -10
const startOfSectionTwo = 101
const contentEl = fixtureEl.querySelector('#content')
'</div>'
].join('')
- fixtureEl.style.display = 'block'
-
const contentEl = fixtureEl.querySelector('.content')
const scrollSpy = new ScrollSpy(contentEl, {
offset: 0,
'</div>'
].join('')
- fixtureEl.style.display = 'block'
-
const contentEl = fixtureEl.querySelector('.content')
const targetEl = fixtureEl.querySelector('#div-jsm-2')
const scrollSpy = new ScrollSpy(contentEl, {
'</div>'
].join('')
- fixtureEl.style.display = 'block'
-
const contentEl = fixtureEl.querySelector('.content')
const targetEl = fixtureEl.querySelector('#div-jsm-2')
const scrollSpy = new ScrollSpy(contentEl, {
describe('dispose', () => {
it('should dispose a scrollspy', () => {
spyOn(EventHandler, 'off')
+ fixtureEl.innerHTML = '<div style="display: none;"></div>'
- const scrollSpy = new ScrollSpy(fixtureEl)
+ const divEl = fixtureEl.querySelector('div')
+ const scrollSpy = new ScrollSpy(divEl)
scrollSpy.dispose()
- expect(EventHandler.off).toHaveBeenCalledWith(fixtureEl, '.bs.scrollspy')
+ expect(EventHandler.off).toHaveBeenCalledWith(divEl, '.bs.scrollspy')
})
})
})
it('should return false if the parent element is not visible', () => {
- fixtureEl.innerHTML = '<div></div>'
+ fixtureEl.innerHTML = [
+ '<div style="display: none;">',
+ ' <div class="content"></div>',
+ '</div>'
+ ].join('')
- const div = fixtureEl.querySelector('div')
+ const div = fixtureEl.querySelector('.content')
expect(Util.isVisible(div)).toEqual(false)
})
if (!fixtureEl) {
fixtureEl = document.createElement('div')
fixtureEl.setAttribute('id', fixtureId)
- fixtureEl.style.display = 'none'
+ fixtureEl.style.position = 'absolute'
+ fixtureEl.style.top = '-10000px'
+ fixtureEl.style.left = '-10000px'
+ fixtureEl.style.width = '10000px'
+ fixtureEl.style.height = '10000px'
document.body.appendChild(fixtureEl)
}