mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-23 09:41:11 +00:00
Use next dropdown menu instead of first of the parent
This commit is contained in:
parent
85b12549ec
commit
2e150e722a
@ -66,6 +66,20 @@ const SelectorEngine = {
|
|||||||
previous = previous.previousElementSibling
|
previous = previous.previousElementSibling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return []
|
||||||
|
},
|
||||||
|
|
||||||
|
next(element, selector) {
|
||||||
|
let next = element.nextElementSibling
|
||||||
|
|
||||||
|
while (next) {
|
||||||
|
if (this.matches(next, selector)) {
|
||||||
|
return [next]
|
||||||
|
}
|
||||||
|
|
||||||
|
next = next.nextElementSibling
|
||||||
|
}
|
||||||
|
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ class Dropdown {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const isActive = this._menu.classList.contains(CLASS_NAME_SHOW)
|
const isActive = this._element.classList.contains(CLASS_NAME_SHOW)
|
||||||
|
|
||||||
Dropdown.clearMenus()
|
Dropdown.clearMenus()
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ class Dropdown {
|
|||||||
relatedTarget: this._element
|
relatedTarget: this._element
|
||||||
}
|
}
|
||||||
|
|
||||||
const showEvent = EventHandler.trigger(parent, EVENT_SHOW, relatedTarget)
|
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)
|
||||||
|
|
||||||
if (showEvent.defaultPrevented) {
|
if (showEvent.defaultPrevented) {
|
||||||
return
|
return
|
||||||
@ -199,7 +199,7 @@ class Dropdown {
|
|||||||
this._element.setAttribute('aria-expanded', true)
|
this._element.setAttribute('aria-expanded', true)
|
||||||
|
|
||||||
Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW)
|
Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW)
|
||||||
Manipulator.toggleClass(parent, CLASS_NAME_SHOW)
|
Manipulator.toggleClass(this._element, CLASS_NAME_SHOW)
|
||||||
EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)
|
EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,7 +224,7 @@ class Dropdown {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW)
|
Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW)
|
||||||
Manipulator.toggleClass(parent, CLASS_NAME_SHOW)
|
Manipulator.toggleClass(this._element, CLASS_NAME_SHOW)
|
||||||
EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)
|
EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,9 +273,7 @@ class Dropdown {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_getMenuElement() {
|
_getMenuElement() {
|
||||||
const parent = Dropdown.getParentFromElement(this._element)
|
return SelectorEngine.next(this._element, SELECTOR_MENU)[0]
|
||||||
|
|
||||||
return SelectorEngine.findOne(SELECTOR_MENU, parent)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_getPlacement() {
|
_getPlacement() {
|
||||||
@ -397,14 +395,14 @@ class Dropdown {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const dropdownMenu = context._menu
|
const dropdownMenu = context._menu
|
||||||
if (!parent.classList.contains(CLASS_NAME_SHOW)) {
|
if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event && ((event.type === 'click' &&
|
if (event && ((event.type === 'click' &&
|
||||||
/input|textarea/i.test(event.target.tagName)) ||
|
/input|textarea/i.test(event.target.tagName)) ||
|
||||||
(event.type === 'keyup' && event.which === TAB_KEYCODE)) &&
|
(event.type === 'keyup' && event.which === TAB_KEYCODE)) &&
|
||||||
parent.contains(event.target)) {
|
dropdownMenu.contains(event.target)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +425,7 @@ class Dropdown {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dropdownMenu.classList.remove(CLASS_NAME_SHOW)
|
dropdownMenu.classList.remove(CLASS_NAME_SHOW)
|
||||||
parent.classList.remove(CLASS_NAME_SHOW)
|
toggles[i].classList.remove(CLASS_NAME_SHOW)
|
||||||
EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)
|
EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -460,13 +458,16 @@ class Dropdown {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const parent = Dropdown.getParentFromElement(this)
|
const parent = Dropdown.getParentFromElement(this)
|
||||||
const isActive = parent.classList.contains(CLASS_NAME_SHOW)
|
const isActive = this.classList.contains(CLASS_NAME_SHOW)
|
||||||
|
|
||||||
if (!isActive || (isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE))) {
|
if (event.which === ESCAPE_KEYCODE) {
|
||||||
if (event.which === ESCAPE_KEYCODE) {
|
const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]
|
||||||
SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, parent).focus()
|
button.focus()
|
||||||
}
|
Dropdown.clearMenus()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isActive || event.which === SPACE_KEYCODE) {
|
||||||
Dropdown.clearMenus()
|
Dropdown.clearMenus()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -478,7 +479,7 @@ class Dropdown {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let index = items.indexOf(event.target)
|
let index = items.indexOf(event.target) || 0
|
||||||
|
|
||||||
if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up
|
if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up
|
||||||
index--
|
index--
|
||||||
@ -488,10 +489,6 @@ class Dropdown {
|
|||||||
index++
|
index++
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index < 0) {
|
|
||||||
index = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
items[index].focus()
|
items[index].focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,5 +126,44 @@ describe('SelectorEngine', () => {
|
|||||||
expect(SelectorEngine.prev(btn, '.test')).toEqual([divTest])
|
expect(SelectorEngine.prev(btn, '.test')).toEqual([divTest])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('next', () => {
|
||||||
|
it('should return next element', () => {
|
||||||
|
fixtureEl.innerHTML = '<div class="test"></div><button class="btn"></button>'
|
||||||
|
|
||||||
|
const btn = fixtureEl.querySelector('.btn')
|
||||||
|
const divTest = fixtureEl.querySelector('.test')
|
||||||
|
|
||||||
|
expect(SelectorEngine.next(divTest, '.btn')).toEqual([btn])
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return next element with an extra element between', () => {
|
||||||
|
fixtureEl.innerHTML = [
|
||||||
|
'<div class="test"></div>',
|
||||||
|
'<span></span>',
|
||||||
|
'<button class="btn"></button>'
|
||||||
|
].join('')
|
||||||
|
|
||||||
|
const btn = fixtureEl.querySelector('.btn')
|
||||||
|
const divTest = fixtureEl.querySelector('.test')
|
||||||
|
|
||||||
|
expect(SelectorEngine.next(divTest, '.btn')).toEqual([btn])
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return next element with comments or text nodes between', () => {
|
||||||
|
fixtureEl.innerHTML = [
|
||||||
|
'<div class="test"></div>',
|
||||||
|
'<!-- Comment-->',
|
||||||
|
'Text',
|
||||||
|
'<button class="btn"></button>',
|
||||||
|
'<button class="btn"></button>'
|
||||||
|
].join('')
|
||||||
|
|
||||||
|
const btn = fixtureEl.querySelector('.btn')
|
||||||
|
const divTest = fixtureEl.querySelector('.test')
|
||||||
|
|
||||||
|
expect(SelectorEngine.next(divTest, '.btn')).toEqual([btn])
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -171,7 +171,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown2 = new Dropdown(btnDropdown2)
|
const dropdown2 = new Dropdown(btnDropdown2)
|
||||||
|
|
||||||
firstDropdownEl.addEventListener('shown.bs.dropdown', () => {
|
firstDropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(firstDropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown1.classList.contains('show')).toEqual(true)
|
||||||
spyOn(dropdown1._popper, 'destroy')
|
spyOn(dropdown1._popper, 'destroy')
|
||||||
dropdown2.toggle()
|
dropdown2.toggle()
|
||||||
})
|
})
|
||||||
@ -204,7 +204,7 @@ describe('Dropdown', () => {
|
|||||||
spyOn(EventHandler, 'off')
|
spyOn(EventHandler, 'off')
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
expect(EventHandler.on).toHaveBeenCalled()
|
expect(EventHandler.on).toHaveBeenCalled()
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('hidden.bs.dropdown', () => {
|
dropdownEl.addEventListener('hidden.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(false)
|
expect(btnDropdown.classList.contains('show')).toEqual(false)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
|
||||||
expect(EventHandler.off).toHaveBeenCalled()
|
expect(EventHandler.off).toHaveBeenCalled()
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -261,7 +261,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
dropupEl.addEventListener('shown.bs.dropdown', () => {
|
dropupEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropupEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -284,7 +284,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
dropupEl.addEventListener('shown.bs.dropdown', () => {
|
dropupEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropupEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -307,7 +307,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
droprightEl.addEventListener('shown.bs.dropdown', () => {
|
droprightEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(droprightEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -330,7 +330,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
dropleftEl.addEventListener('shown.bs.dropdown', () => {
|
dropleftEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropleftEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -355,7 +355,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -380,7 +380,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -405,7 +405,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
@ -538,7 +538,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdown = new Dropdown(btnDropdown)
|
const dropdown = new Dropdown(btnDropdown)
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -983,7 +983,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', e => {
|
dropdownEl.addEventListener('shown.bs.dropdown', e => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
|
||||||
expect(showEventTriggered).toEqual(true)
|
expect(showEventTriggered).toEqual(true)
|
||||||
expect(e.relatedTarget).toEqual(btnDropdown)
|
expect(e.relatedTarget).toEqual(btnDropdown)
|
||||||
@ -995,7 +995,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('hidden.bs.dropdown', e => {
|
dropdownEl.addEventListener('hidden.bs.dropdown', e => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(false)
|
expect(btnDropdown.classList.contains('show')).toEqual(false)
|
||||||
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
|
expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
|
||||||
expect(hideEventTriggered).toEqual(true)
|
expect(hideEventTriggered).toEqual(true)
|
||||||
expect(e.relatedTarget).toEqual(btnDropdown)
|
expect(e.relatedTarget).toEqual(btnDropdown)
|
||||||
@ -1066,7 +1066,7 @@ describe('Dropdown', () => {
|
|||||||
const dropdownEl = fixtureEl.querySelector('.dropdown')
|
const dropdownEl = fixtureEl.querySelector('.dropdown')
|
||||||
|
|
||||||
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
dropdownEl.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(true)
|
expect(btnDropdown.classList.contains('show')).toEqual(true)
|
||||||
|
|
||||||
const keyUp = createEvent('keyup')
|
const keyUp = createEvent('keyup')
|
||||||
|
|
||||||
@ -1075,7 +1075,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dropdownEl.addEventListener('hidden.bs.dropdown', () => {
|
dropdownEl.addEventListener('hidden.bs.dropdown', () => {
|
||||||
expect(dropdownEl.classList.contains('show')).toEqual(false)
|
expect(btnDropdown.classList.contains('show')).toEqual(false)
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1111,7 +1111,7 @@ describe('Dropdown', () => {
|
|||||||
const btnGroup = last.parentNode
|
const btnGroup = last.parentNode
|
||||||
|
|
||||||
dropdownTestMenu.addEventListener('shown.bs.dropdown', () => {
|
dropdownTestMenu.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownTestMenu.classList.contains('show')).toEqual(true)
|
expect(first.classList.contains('show')).toEqual(true)
|
||||||
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1)
|
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1)
|
||||||
document.body.click()
|
document.body.click()
|
||||||
})
|
})
|
||||||
@ -1122,7 +1122,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
btnGroup.addEventListener('shown.bs.dropdown', () => {
|
btnGroup.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(btnGroup.classList.contains('show')).toEqual(true)
|
expect(last.classList.contains('show')).toEqual(true)
|
||||||
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1)
|
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1)
|
||||||
document.body.click()
|
document.body.click()
|
||||||
})
|
})
|
||||||
@ -1162,7 +1162,7 @@ describe('Dropdown', () => {
|
|||||||
const btnGroup = last.parentNode
|
const btnGroup = last.parentNode
|
||||||
|
|
||||||
dropdownTestMenu.addEventListener('shown.bs.dropdown', () => {
|
dropdownTestMenu.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdownTestMenu.classList.contains('show')).toEqual(true, '"show" class added on click')
|
expect(first.classList.contains('show')).toEqual(true, '"show" class added on click')
|
||||||
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1, 'only one dropdown is shown')
|
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1, 'only one dropdown is shown')
|
||||||
|
|
||||||
const keyUp = createEvent('keyup')
|
const keyUp = createEvent('keyup')
|
||||||
@ -1177,7 +1177,7 @@ describe('Dropdown', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
btnGroup.addEventListener('shown.bs.dropdown', () => {
|
btnGroup.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(btnGroup.classList.contains('show')).toEqual(true, '"show" class added on click')
|
expect(last.classList.contains('show')).toEqual(true, '"show" class added on click')
|
||||||
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1, 'only one dropdown is shown')
|
expect(fixtureEl.querySelectorAll('.dropdown-menu.show').length).toEqual(1, 'only one dropdown is shown')
|
||||||
|
|
||||||
const keyUp = createEvent('keyup')
|
const keyUp = createEvent('keyup')
|
||||||
@ -1382,12 +1382,12 @@ describe('Dropdown', () => {
|
|||||||
const input = fixtureEl.querySelector('input')
|
const input = fixtureEl.querySelector('input')
|
||||||
|
|
||||||
input.addEventListener('click', () => {
|
input.addEventListener('click', () => {
|
||||||
expect(dropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
expect(triggerDropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
dropdown.addEventListener('shown.bs.dropdown', () => {
|
dropdown.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
expect(triggerDropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
||||||
input.dispatchEvent(createEvent('click'))
|
input.dispatchEvent(createEvent('click'))
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1409,12 +1409,12 @@ describe('Dropdown', () => {
|
|||||||
const textarea = fixtureEl.querySelector('textarea')
|
const textarea = fixtureEl.querySelector('textarea')
|
||||||
|
|
||||||
textarea.addEventListener('click', () => {
|
textarea.addEventListener('click', () => {
|
||||||
expect(dropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
expect(triggerDropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
dropdown.addEventListener('shown.bs.dropdown', () => {
|
dropdown.addEventListener('shown.bs.dropdown', () => {
|
||||||
expect(dropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
expect(triggerDropdown.classList.contains('show')).toEqual(true, 'dropdown menu is shown')
|
||||||
textarea.dispatchEvent(createEvent('click'))
|
textarea.dispatchEvent(createEvent('click'))
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1492,7 +1492,7 @@ describe('Dropdown', () => {
|
|||||||
input.focus()
|
input.focus()
|
||||||
input.dispatchEvent(keyDownEscape)
|
input.dispatchEvent(keyDownEscape)
|
||||||
|
|
||||||
expect(dropdown.classList.contains('show')).toEqual(false, 'dropdown menu is not shown')
|
expect(triggerDropdown.classList.contains('show')).toEqual(false, 'dropdown menu is not shown')
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1529,7 +1529,7 @@ describe('Dropdown', () => {
|
|||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
expect(dropdown.toggle).not.toHaveBeenCalled()
|
expect(dropdown.toggle).not.toHaveBeenCalled()
|
||||||
expect(triggerDropdown.parentNode.classList.contains('show')).toEqual(false)
|
expect(triggerDropdown.classList.contains('show')).toEqual(false)
|
||||||
done()
|
done()
|
||||||
}, 20)
|
}, 20)
|
||||||
})
|
})
|
||||||
|
@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
&:active,
|
&:active,
|
||||||
&.active,
|
&.active,
|
||||||
.show > &.dropdown-toggle {
|
&.dropdown-toggle.show {
|
||||||
color: $active-color;
|
color: $active-color;
|
||||||
background-color: $active-background;
|
background-color: $active-background;
|
||||||
border-color: $active-border;
|
border-color: $active-border;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user