@@ -8,7 +8,7 @@ import { IgxDropDownComponent, IgxDropDownModule } from './public_api';
88import { ISelectionEventArgs } from './drop-down.common' ;
99import { IgxTabsComponent , IgxTabsModule } from '../tabs/tabs/public_api' ;
1010import { UIInteractions , wait } from '../test-utils/ui-interactions.spec' ;
11- import { CancelableEventArgs } from '../core/utils' ;
11+ import { CancelableEventArgs , IBaseCancelableBrowserEventArgs } from '../core/utils' ;
1212import { configureTestSuite } from '../test-utils/configure-suite' ;
1313import { take } from 'rxjs/operators' ;
1414import { IgxDropDownGroupComponent } from './drop-down-group.component' ;
@@ -524,6 +524,47 @@ describe('IgxDropDown ', () => {
524524 } ;
525525 expect ( dropdown . selectionChanging . emit ) . toHaveBeenCalledWith ( canceledSelectionArgs ) ;
526526 } ) ) ;
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+ } ) ) ;
527568 it ( 'should be able to change selection when manipulating ISelectionEventArgs' , fakeAsync ( ( ) => {
528569 expect ( dropdown . selectedItem ) . toEqual ( null ) ;
529570 dropdown . toggle ( ) ;
0 commit comments