@@ -8,7 +8,7 @@ import { IgxDropDownComponent, IgxDropDownModule } from './public_api';
8
8
import { ISelectionEventArgs } from './drop-down.common' ;
9
9
import { IgxTabsComponent , IgxTabsModule } from '../tabs/tabs/public_api' ;
10
10
import { UIInteractions , wait } from '../test-utils/ui-interactions.spec' ;
11
- import { CancelableEventArgs } from '../core/utils' ;
11
+ import { CancelableEventArgs , IBaseCancelableBrowserEventArgs } from '../core/utils' ;
12
12
import { configureTestSuite } from '../test-utils/configure-suite' ;
13
13
import { take } from 'rxjs/operators' ;
14
14
import { IgxDropDownGroupComponent } from './drop-down-group.component' ;
@@ -524,6 +524,47 @@ describe('IgxDropDown ', () => {
524
524
} ;
525
525
expect ( dropdown . selectionChanging . emit ) . toHaveBeenCalledWith ( canceledSelectionArgs ) ;
526
526
} ) ) ;
527
+ it ( 'should provide correct event argument when closing through keyboard' , fakeAsync ( ( ) => {
528
+ spyOn ( dropdown . closing , 'emit' ) . and . callThrough ( ) ;
529
+ const dropdownElement = fixture . debugElement . query ( By . css ( `.${ CSS_CLASS_DROP_DOWN_BASE } ` ) ) ;
530
+
531
+ dropdown . toggle ( ) ;
532
+ tick ( ) ;
533
+ fixture . detectChanges ( ) ;
534
+ let focusedItem = fixture . debugElement . query ( By . css ( `.${ CSS_CLASS_FOCUSED } ` ) ) ;
535
+ expect ( focusedItem ) . toBeDefined ( ) ;
536
+
537
+ let eventArgs : IBaseCancelableBrowserEventArgs ;
538
+ dropdown . closing . pipe ( take ( 1 ) ) . subscribe ( ( args : IBaseCancelableBrowserEventArgs ) => {
539
+ eventArgs = args ;
540
+ } ) ;
541
+
542
+ UIInteractions . triggerEventHandlerKeyDown ( 'escape' , dropdownElement ) ;
543
+ tick ( ) ;
544
+ fixture . detectChanges ( ) ;
545
+ expect ( dropdown . closing . emit ) . toHaveBeenCalledTimes ( 1 ) ;
546
+ expect ( eventArgs . event ) . toBeDefined ( ) ;
547
+ expect ( ( eventArgs . event as KeyboardEvent ) . type ) . toEqual ( 'keydown' ) ;
548
+ expect ( ( eventArgs . event as KeyboardEvent ) . key ) . toEqual ( 'escape' ) ;
549
+
550
+ dropdown . toggle ( ) ;
551
+ tick ( ) ;
552
+ fixture . detectChanges ( ) ;
553
+ focusedItem = fixture . debugElement . query ( By . css ( `.${ CSS_CLASS_FOCUSED } ` ) ) ;
554
+ expect ( focusedItem ) . toBeDefined ( ) ;
555
+
556
+ dropdown . closing . pipe ( take ( 1 ) ) . subscribe ( ( args : IBaseCancelableBrowserEventArgs ) => {
557
+ eventArgs = args ;
558
+ } ) ;
559
+
560
+ UIInteractions . triggerEventHandlerKeyDown ( 'enter' , dropdownElement ) ;
561
+ tick ( ) ;
562
+ fixture . detectChanges ( ) ;
563
+ expect ( dropdown . closing . emit ) . toHaveBeenCalledTimes ( 2 ) ;
564
+ expect ( eventArgs . event ) . toBeDefined ( ) ;
565
+ expect ( ( eventArgs . event as KeyboardEvent ) . type ) . toEqual ( 'keydown' ) ;
566
+ expect ( ( eventArgs . event as KeyboardEvent ) . key ) . toEqual ( 'enter' ) ;
567
+ } ) ) ;
527
568
it ( 'should be able to change selection when manipulating ISelectionEventArgs' , fakeAsync ( ( ) => {
528
569
expect ( dropdown . selectedItem ) . toEqual ( null ) ;
529
570
dropdown . toggle ( ) ;
0 commit comments