@@ -1561,7 +1561,7 @@ describe('Dropdown', () => {
1561
1561
triggerDropdown . click ( )
1562
1562
} )
1563
1563
1564
- it ( 'should focus on the first element when using ArrowUp for the first time' , done => {
1564
+ it ( 'should open the dropdown and focus on the last item when using ArrowUp for the first time' , done => {
1565
1565
fixtureEl . innerHTML = [
1566
1566
'<div class="dropdown">' ,
1567
1567
' <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>' ,
@@ -1573,19 +1573,44 @@ describe('Dropdown', () => {
1573
1573
] . join ( '' )
1574
1574
1575
1575
const triggerDropdown = fixtureEl . querySelector ( '[data-bs-toggle="dropdown"]' )
1576
- const item1 = fixtureEl . querySelector ( '#item1 ' )
1576
+ const lastItem = fixtureEl . querySelector ( '#item2 ' )
1577
1577
1578
1578
triggerDropdown . addEventListener ( 'shown.bs.dropdown' , ( ) => {
1579
- const keydown = createEvent ( 'keydown' )
1580
- keydown . key = 'ArrowUp'
1579
+ setTimeout ( ( ) => {
1580
+ expect ( document . activeElement ) . toEqual ( lastItem , 'item2 is focused' )
1581
+ done ( )
1582
+ } )
1583
+ } )
1581
1584
1582
- document . activeElement . dispatchEvent ( keydown )
1583
- expect ( document . activeElement ) . toEqual ( item1 , 'item1 is focused' )
1585
+ const keydown = createEvent ( 'keydown' )
1586
+ keydown . key = 'ArrowUp'
1587
+ triggerDropdown . dispatchEvent ( keydown )
1588
+ } )
1584
1589
1585
- done ( )
1590
+ it ( 'should open the dropdown and focus on the first item when using ArrowDown for the first time' , done => {
1591
+ fixtureEl . innerHTML = [
1592
+ '<div class="dropdown">' ,
1593
+ ' <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>' ,
1594
+ ' <div class="dropdown-menu">' ,
1595
+ ' <a id="item1" class="dropdown-item" href="#">A link</a>' ,
1596
+ ' <a id="item2" class="dropdown-item" href="#">Another link</a>' ,
1597
+ ' </div>' ,
1598
+ '</div>'
1599
+ ] . join ( '' )
1600
+
1601
+ const triggerDropdown = fixtureEl . querySelector ( '[data-bs-toggle="dropdown"]' )
1602
+ const firstItem = fixtureEl . querySelector ( '#item1' )
1603
+
1604
+ triggerDropdown . addEventListener ( 'shown.bs.dropdown' , ( ) => {
1605
+ setTimeout ( ( ) => {
1606
+ expect ( document . activeElement ) . toEqual ( firstItem , 'item1 is focused' )
1607
+ done ( )
1608
+ } )
1586
1609
} )
1587
1610
1588
- triggerDropdown . click ( )
1611
+ const keydown = createEvent ( 'keydown' )
1612
+ keydown . key = 'ArrowDown'
1613
+ triggerDropdown . dispatchEvent ( keydown )
1589
1614
} )
1590
1615
1591
1616
it ( 'should not close the dropdown if the user clicks on a text field within dropdown-menu' , done => {
0 commit comments