@@ -550,70 +550,67 @@ describe('uib-dropdown', function() {
550
550
function dropdown ( ) {
551
551
return $compile ( '<li uib-dropdown keyboard-nav><a href uib-dropdown-toggle></a><ul uib-dropdown-menu><li><a href>Hello</a></li><li><a href>Hello Again</a></li></ul></li>' ) ( $rootScope ) ;
552
552
}
553
+ function getFocusedElement ( ) {
554
+ return angular . element ( document . activeElement ) ;
555
+ }
553
556
beforeEach ( function ( ) {
554
557
element = dropdown ( ) ;
555
558
} ) ;
556
559
557
560
it ( 'should focus first list element when down arrow pressed' , function ( ) {
558
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
559
561
$document . find ( 'body' ) . append ( element ) ;
560
562
clickDropdownToggle ( ) ;
561
- triggerKeyDown ( dropdownMenu , 40 ) ;
563
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
562
564
563
565
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
564
566
var optionEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 0 ) ;
565
567
expect ( optionEl ) . toHaveFocus ( ) ;
566
568
} ) ;
567
569
568
570
it ( 'should not focus first list element when down arrow pressed if closed' , function ( ) {
569
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
570
571
$document . find ( 'body' ) . append ( element ) ;
571
- triggerKeyDown ( dropdownMenu , 40 ) ;
572
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
572
573
573
574
expect ( element ) . not . toHaveClass ( dropdownConfig . openClass ) ;
574
575
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 0 ) ;
575
576
expect ( focusEl ) . not . toHaveFocus ( ) ;
576
577
} ) ;
577
578
578
579
it ( 'should focus second list element when down arrow pressed twice' , function ( ) {
579
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
580
580
$document . find ( 'body' ) . append ( element ) ;
581
581
clickDropdownToggle ( ) ;
582
- triggerKeyDown ( dropdownMenu , 40 ) ;
583
- triggerKeyDown ( dropdownMenu , 40 ) ;
582
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
583
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
584
584
585
585
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
586
586
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 1 ) ;
587
587
expect ( focusEl ) . toHaveFocus ( ) ;
588
588
} ) ;
589
589
590
590
it ( 'should not focus first list element when up arrow pressed after dropdown toggled' , function ( ) {
591
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
592
591
$document . find ( 'body' ) . append ( element ) ;
593
592
clickDropdownToggle ( ) ;
594
593
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
595
594
596
- triggerKeyDown ( dropdownMenu , 38 ) ;
595
+ triggerKeyDown ( getFocusedElement ( ) , 38 ) ;
597
596
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 0 ) ;
598
597
expect ( focusEl ) . not . toHaveFocus ( ) ;
599
598
} ) ;
600
599
601
600
it ( 'should focus last list element when up arrow pressed after dropdown toggled' , function ( ) {
602
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
603
601
$document . find ( 'body' ) . append ( element ) ;
604
602
clickDropdownToggle ( ) ;
605
- triggerKeyDown ( dropdownMenu , 38 ) ;
603
+ triggerKeyDown ( getFocusedElement ( ) , 38 ) ;
606
604
607
605
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
608
606
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 1 ) ;
609
607
expect ( focusEl ) . toHaveFocus ( ) ;
610
608
} ) ;
611
609
612
610
it ( 'should not change focus when other keys are pressed' , function ( ) {
613
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
614
611
$document . find ( 'body' ) . append ( element ) ;
615
612
clickDropdownToggle ( ) ;
616
- triggerKeyDown ( dropdownMenu , 37 ) ;
613
+ triggerKeyDown ( getFocusedElement ( ) , 37 ) ;
617
614
618
615
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
619
616
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) ;
@@ -622,25 +619,23 @@ describe('uib-dropdown', function() {
622
619
} ) ;
623
620
624
621
it ( 'should focus first list element when down arrow pressed 2x and up pressed 1x' , function ( ) {
625
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
626
622
$document . find ( 'body' ) . append ( element ) ;
627
623
clickDropdownToggle ( ) ;
628
- triggerKeyDown ( dropdownMenu , 40 ) ;
629
- triggerKeyDown ( dropdownMenu , 40 ) ;
624
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
625
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
630
626
631
- triggerKeyDown ( dropdownMenu , 38 ) ;
627
+ triggerKeyDown ( getFocusedElement ( ) , 38 ) ;
632
628
633
629
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
634
630
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 0 ) ;
635
631
expect ( focusEl ) . toHaveFocus ( ) ;
636
632
} ) ;
637
633
638
634
it ( 'should stay focused on final list element if down pressed at list end' , function ( ) {
639
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
640
635
$document . find ( 'body' ) . append ( element ) ;
641
636
clickDropdownToggle ( ) ;
642
- triggerKeyDown ( dropdownMenu , 40 ) ;
643
- triggerKeyDown ( dropdownMenu , 40 ) ;
637
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
638
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
644
639
645
640
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
646
641
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 1 ) ;
@@ -652,47 +647,48 @@ describe('uib-dropdown', function() {
652
647
653
648
it ( 'should close if esc is pressed while focused' , function ( ) {
654
649
element = dropdown ( 'disabled' ) ;
655
- var dropdownMenu = element . find ( '[uib-dropdown-menu]' ) ;
656
650
$document . find ( 'body' ) . append ( element ) ;
657
651
clickDropdownToggle ( ) ;
658
652
659
- triggerKeyDown ( dropdownMenu , 40 ) ;
653
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
660
654
661
655
expect ( element ) . toHaveClass ( dropdownConfig . openClass ) ;
662
656
var focusEl = element . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) . eq ( 0 ) ;
663
657
expect ( focusEl ) . toHaveFocus ( ) ;
664
658
665
- triggerKeyDown ( dropdownMenu , 27 ) ;
659
+ triggerKeyDown ( getFocusedElement ( ) , 27 ) ;
666
660
expect ( element ) . not . toHaveClass ( dropdownConfig . openClass ) ;
667
661
} ) ;
668
662
669
663
describe ( 'with dropdown-append-to-body' , function ( ) {
670
664
function dropdown ( ) {
671
- return $compile ( '<li uib-dropdown dropdown-append-to-body keyboard-nav><a href uib-dropdown-toggle></a><ul uib-dropdown-menu id="dropdown-menu"><li><a href>Hello On Body</a></li><li><a href>Hello Again</a></li></ul></li>' ) ( $rootScope ) ;
665
+ return $compile ( '<li uib-dropdown dropdown-append-to-body keyboard-nav><a href uib-dropdown-toggle>foo </a><ul uib-dropdown-menu id="dropdown-menu"><li><a href>Hello On Body</a></li><li><a href>Hello Again</a></li></ul></li>' ) ( $rootScope ) ;
672
666
}
673
667
674
668
beforeEach ( function ( ) {
675
669
element = dropdown ( ) ;
676
670
} ) ;
677
671
678
672
it ( 'should focus first list element when down arrow pressed' , function ( ) {
673
+ $document . find ( 'body' ) . append ( element ) ;
679
674
clickDropdownToggle ( ) ;
680
675
681
676
var dropdownMenu = $document . find ( '#dropdown-menu' ) ;
682
677
683
- triggerKeyDown ( dropdownMenu , 40 ) ;
678
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
684
679
685
680
expect ( dropdownMenu . parent ( ) ) . toHaveClass ( dropdownConfig . appendToOpenClass ) ;
686
681
var focusEl = $document . find ( 'ul' ) . eq ( 0 ) . find ( 'a' ) ;
687
682
expect ( focusEl ) . toHaveFocus ( ) ;
688
683
} ) ;
689
684
690
685
it ( 'should focus second list element when down arrow pressed twice' , function ( ) {
686
+ $document . find ( 'body' ) . append ( element ) ;
691
687
clickDropdownToggle ( ) ;
692
688
var dropdownMenu = $document . find ( '#dropdown-menu' ) ;
693
- triggerKeyDown ( dropdownMenu , 40 ) ;
694
- triggerKeyDown ( dropdownMenu , 40 ) ;
695
- triggerKeyDown ( dropdownMenu , 40 ) ;
689
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
690
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
691
+ triggerKeyDown ( getFocusedElement ( ) , 40 ) ;
696
692
697
693
expect ( dropdownMenu . parent ( ) ) . toHaveClass ( dropdownConfig . appendToOpenClass ) ;
698
694
var elem1 = $document . find ( 'ul' ) ;
0 commit comments