Skip to content

Commit e2294ff

Browse files
authored
Add missing test for clicking select option in a dropdown (#33734)
1 parent c25897b commit e2294ff

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

js/tests/unit/dropdown.spec.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,6 +1102,47 @@ describe('Dropdown', () => {
11021102
dropdown.show()
11031103
})
11041104

1105+
it('should not collapse the dropdown when clicking a select option nested in the dropdown', done => {
1106+
fixtureEl.innerHTML = [
1107+
'<div class="dropdown">',
1108+
' <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
1109+
' <div class="dropdown-menu">',
1110+
' <select>',
1111+
' <option selected>Open this select menu</option>',
1112+
' <option value="1">One</option>',
1113+
' </select>',
1114+
' </div>',
1115+
'</div>'
1116+
].join('')
1117+
1118+
const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
1119+
const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
1120+
const dropdown = new Dropdown(btnDropdown)
1121+
1122+
const hideSpy = spyOn(dropdown, '_completeHide')
1123+
1124+
btnDropdown.addEventListener('shown.bs.dropdown', () => {
1125+
const clickEvent = new MouseEvent('click', {
1126+
bubbles: true
1127+
})
1128+
1129+
dropdownMenu.querySelector('option').dispatchEvent(clickEvent)
1130+
})
1131+
1132+
dropdownMenu.addEventListener('click', event => {
1133+
expect(event.target.tagName).toMatch(/select|option/i)
1134+
1135+
Dropdown.clearMenus(event)
1136+
1137+
setTimeout(() => {
1138+
expect(hideSpy).not.toHaveBeenCalled()
1139+
done()
1140+
}, 10)
1141+
})
1142+
1143+
dropdown.show()
1144+
})
1145+
11051146
it('should manage bs attribute `data-bs-popper`="none" when dropdown is in navbar', done => {
11061147
fixtureEl.innerHTML = [
11071148
'<nav class="navbar navbar-expand-md navbar-light bg-light">',

0 commit comments

Comments
 (0)