1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-10 15:44:51 +02:00

Update to popper.js v2.x

This commit is contained in:
Johann-S
2020-06-19 11:17:01 +03:00
committed by XhmikosR
parent 5f89ea3a0f
commit adfdf7160b
26 changed files with 145 additions and 297 deletions

View File

@@ -1,5 +1,5 @@
import 'popper.js'
import Tooltip from '../../dist/tooltip'
import '../../dist/carousel'
window.addEventListener('load', () => {
[].concat(...document.querySelectorAll('[data-bs-toggle="tooltip"]'))

View File

@@ -1,4 +1,3 @@
import 'popper.js'
import { Tooltip } from '../../../dist/js/bootstrap.esm.js'
window.addEventListener('load', () => {

View File

@@ -2,6 +2,7 @@
const { babel } = require('@rollup/plugin-babel')
const { nodeResolve } = require('@rollup/plugin-node-resolve')
const replace = require('@rollup/plugin-replace')
module.exports = {
input: 'js/tests/integration/bundle.js',
@@ -10,6 +11,9 @@ module.exports = {
format: 'iife'
},
plugins: [
replace({
'process.env.NODE_ENV': '"production"'
}),
nodeResolve(),
babel({
exclude: 'node_modules/**',

View File

@@ -5,6 +5,7 @@ const ip = require('ip')
const { babel } = require('@rollup/plugin-babel')
const istanbul = require('rollup-plugin-istanbul')
const { nodeResolve } = require('@rollup/plugin-node-resolve')
const replace = require('@rollup/plugin-replace')
const {
browsers,
@@ -74,6 +75,9 @@ const conf = {
},
rollupPreprocessor: {
plugins: [
replace({
'process.env.NODE_ENV': '"dev"'
}),
istanbul({
exclude: [
'node_modules/**',

View File

@@ -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">',

View File

@@ -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()
})

View File

@@ -78,7 +78,9 @@
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
</div>
<div class="col-sm-12 mt-4">
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropup</button>
<ul class="dropdown-menu">
@@ -170,16 +172,6 @@
</div>
<div class="row">
<div class="col-sm-3 mt-4">
<div class="btn-group dropdown">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-offset="10,20">Dropdown offset</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
</div>
<div class="col-sm-3 mt-4">
<div class="btn-group dropdown">
<button type="button" class="btn btn-secondary">Dropdown reference</button>
@@ -206,10 +198,9 @@
</div>
</div>
</div>
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
<script src="../../../node_modules/@popperjs/core/dist/umd/popper.min.js"></script>
<script src="../../dist/dom/event-handler.js"></script>
<script src="../../dist/dom/selector-engine.js"></script>
<script src="../../dist/dom/data.js"></script>

View File

@@ -31,7 +31,7 @@
</button>
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
<script src="../../../node_modules/@popperjs/core/dist/umd/popper.min.js"></script>
<script src="../../dist/dom/event-handler.js"></script>
<script src="../../dist/dom/selector-engine.js"></script>
<script src="../../dist/dom/manipulator.js"></script>

View File

@@ -68,7 +68,7 @@
<div id="customContainer"></div>
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
<script src="../../../node_modules/@popperjs/core/dist/umd/popper.min.js"></script>
<script src="../../dist/dom/selector-engine.js"></script>
<script src="../../dist/dom/event-handler.js"></script>
<script src="../../dist/dom/manipulator.js"></script>