mirror of
https://github.com/twbs/bootstrap.git
synced 2025-08-16 10:34:07 +02:00
Update to popper.js v2.x
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import Popper from 'popper.js'
|
||||
|
||||
import Dropdown from '../../src/dropdown'
|
||||
import EventHandler from '../../src/dom/event-handler'
|
||||
|
||||
@@ -36,50 +34,6 @@ describe('Dropdown', () => {
|
||||
})
|
||||
|
||||
describe('constructor', () => {
|
||||
it('should create offset modifier correctly when offset option is a function', () => {
|
||||
fixtureEl.innerHTML = [
|
||||
'<div class="dropdown">',
|
||||
' <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
|
||||
' <div class="dropdown-menu">',
|
||||
' <a class="dropdown-item" href="#">Secondary link</a>',
|
||||
' </div>',
|
||||
'</div>'
|
||||
].join('')
|
||||
|
||||
const getOffset = offsets => offsets
|
||||
const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
|
||||
const dropdown = new Dropdown(btnDropdown, {
|
||||
offset: getOffset
|
||||
})
|
||||
|
||||
const offset = dropdown._getOffset()
|
||||
|
||||
expect(offset.offset).toBeUndefined()
|
||||
expect(typeof offset.fn).toEqual('function')
|
||||
})
|
||||
|
||||
it('should create offset modifier correctly when offset option is not a function', () => {
|
||||
fixtureEl.innerHTML = [
|
||||
'<div class="dropdown">',
|
||||
' <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
|
||||
' <div class="dropdown-menu">',
|
||||
' <a class="dropdown-item" href="#">Secondary link</a>',
|
||||
' </div>',
|
||||
'</div>'
|
||||
].join('')
|
||||
|
||||
const myOffset = 7
|
||||
const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
|
||||
const dropdown = new Dropdown(btnDropdown, {
|
||||
offset: myOffset
|
||||
})
|
||||
|
||||
const offset = dropdown._getOffset()
|
||||
|
||||
expect(offset.offset).toEqual(myOffset)
|
||||
expect(offset.fn).toBeUndefined()
|
||||
})
|
||||
|
||||
it('should add a listener on trigger which do not have data-bs-toggle="dropdown"', () => {
|
||||
fixtureEl.innerHTML = [
|
||||
'<div class="dropdown">',
|
||||
@@ -860,14 +814,11 @@ describe('Dropdown', () => {
|
||||
expect(dropdown._menu).toBeDefined()
|
||||
expect(dropdown._element).toBeDefined()
|
||||
|
||||
spyOn(Popper.prototype, 'destroy')
|
||||
|
||||
dropdown.dispose()
|
||||
|
||||
expect(dropdown._popper).toBeNull()
|
||||
expect(dropdown._menu).toBeNull()
|
||||
expect(dropdown._element).toBeNull()
|
||||
expect(Popper.prototype.destroy).toHaveBeenCalled()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -889,12 +840,12 @@ describe('Dropdown', () => {
|
||||
|
||||
expect(dropdown._popper).toBeDefined()
|
||||
|
||||
spyOn(dropdown._popper, 'scheduleUpdate')
|
||||
spyOn(dropdown._popper, 'update')
|
||||
spyOn(dropdown, '_detectNavbar')
|
||||
|
||||
dropdown.update()
|
||||
|
||||
expect(dropdown._popper.scheduleUpdate).toHaveBeenCalled()
|
||||
expect(dropdown._popper.update).toHaveBeenCalled()
|
||||
expect(dropdown._detectNavbar).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
@@ -921,48 +872,6 @@ describe('Dropdown', () => {
|
||||
})
|
||||
|
||||
describe('data-api', () => {
|
||||
it('should not add class position-static to dropdown if boundary not set', done => {
|
||||
fixtureEl.innerHTML = [
|
||||
'<div class="dropdown">',
|
||||
' <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
|
||||
' <div class="dropdown-menu">',
|
||||
' <a class="dropdown-item" href="#">Secondary link</a>',
|
||||
' </div>',
|
||||
'</div>'
|
||||
].join('')
|
||||
|
||||
const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
|
||||
const dropdownEl = fixtureEl.querySelector('.dropdown')
|
||||
|
||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||
expect(dropdownEl.classList.contains('position-static')).toEqual(false)
|
||||
done()
|
||||
})
|
||||
|
||||
btnDropdown.click()
|
||||
})
|
||||
|
||||
it('should add class position-static to dropdown if boundary not scrollParent', done => {
|
||||
fixtureEl.innerHTML = [
|
||||
'<div class="dropdown">',
|
||||
' <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-boundary="viewport">Dropdown</button>',
|
||||
' <div class="dropdown-menu">',
|
||||
' <a class="dropdown-item" href="#">Secondary link</a>',
|
||||
' </div>',
|
||||
'</div>'
|
||||
].join('')
|
||||
|
||||
const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
|
||||
const dropdownEl = fixtureEl.querySelector('.dropdown')
|
||||
|
||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||
expect(dropdownEl.classList.contains('position-static')).toEqual(true)
|
||||
done()
|
||||
})
|
||||
|
||||
btnDropdown.click()
|
||||
})
|
||||
|
||||
it('should show and hide a dropdown', done => {
|
||||
fixtureEl.innerHTML = [
|
||||
'<div class="dropdown">',
|
||||
|
@@ -483,24 +483,6 @@ describe('Tooltip', () => {
|
||||
tooltip.show()
|
||||
})
|
||||
|
||||
it('should show a tooltip with offset as a function', done => {
|
||||
fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
|
||||
|
||||
const spy = jasmine.createSpy('offset').and.returnValue({})
|
||||
const tooltipEl = fixtureEl.querySelector('a')
|
||||
const tooltip = new Tooltip(tooltipEl, {
|
||||
offset: spy
|
||||
})
|
||||
|
||||
tooltipEl.addEventListener('shown.bs.tooltip', () => {
|
||||
expect(document.querySelector('.tooltip')).toBeDefined()
|
||||
expect(spy).toHaveBeenCalled()
|
||||
done()
|
||||
})
|
||||
|
||||
tooltip.show()
|
||||
})
|
||||
|
||||
it('should show a tooltip without the animation', done => {
|
||||
fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
|
||||
|
||||
@@ -789,18 +771,18 @@ describe('Tooltip', () => {
|
||||
})
|
||||
|
||||
describe('update', () => {
|
||||
it('should call popper schedule update', done => {
|
||||
it('should call popper update', done => {
|
||||
fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
|
||||
|
||||
const tooltipEl = fixtureEl.querySelector('a')
|
||||
const tooltip = new Tooltip(tooltipEl)
|
||||
|
||||
tooltipEl.addEventListener('shown.bs.tooltip', () => {
|
||||
spyOn(tooltip._popper, 'scheduleUpdate')
|
||||
spyOn(tooltip._popper, 'update')
|
||||
|
||||
tooltip.update()
|
||||
|
||||
expect(tooltip._popper.scheduleUpdate).toHaveBeenCalled()
|
||||
expect(tooltip._popper.update).toHaveBeenCalled()
|
||||
done()
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user