Skip to content

Commit 4ad348a

Browse files
author
ddaribo
committed
fix(*): pass optional event arguments for closing
1 parent 269ea7c commit 4ad348a

File tree

3 files changed

+48
-7
lines changed

3 files changed

+48
-7
lines changed

projects/igniteui-angular/src/lib/directives/toggle/toggle.directive.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ export class IgxToggleDirective implements IToggleView, OnInit, OnDestroy {
241241
* this.myToggle.close();
242242
* ```
243243
*/
244-
public close() {
244+
public close(event?: Event) {
245245
// if toggle is collapsed do nothing
246246
// if there is close animation do nothing, toggle will close anyway
247247
const info = this.overlayService.getOverlayById(this._overlayId);
@@ -250,7 +250,7 @@ export class IgxToggleDirective implements IToggleView, OnInit, OnDestroy {
250250
return;
251251
}
252252

253-
this.overlayService.hide(this._overlayId);
253+
this.overlayService.hide(this._overlayId, event);
254254
}
255255

256256
/**

projects/igniteui-angular/src/lib/drop-down/drop-down.component.spec.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { IgxDropDownComponent, IgxDropDownModule } from './public_api';
88
import { ISelectionEventArgs } from './drop-down.common';
99
import { IgxTabsComponent, IgxTabsModule } from '../tabs/tabs/public_api';
1010
import { UIInteractions, wait } from '../test-utils/ui-interactions.spec';
11-
import { CancelableEventArgs } from '../core/utils';
11+
import { CancelableEventArgs, IBaseCancelableBrowserEventArgs } from '../core/utils';
1212
import { configureTestSuite } from '../test-utils/configure-suite';
1313
import { take } from 'rxjs/operators';
1414
import { 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();

projects/igniteui-angular/src/lib/drop-down/drop-down.component.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ export class IgxDropDownComponent extends IgxDropDownBaseDirective implements ID
242242
* this.dropdown.close();
243243
* ```
244244
*/
245-
public close() {
246-
this.toggleDirective.close();
245+
public close(event?: Event) {
246+
this.toggleDirective.close(event);
247247
}
248248

249249
/**
@@ -438,7 +438,7 @@ export class IgxDropDownComponent extends IgxDropDownBaseDirective implements ID
438438
/** Keydown Handler */
439439
public onItemActionKey(key: DropDownActionKey, event?: Event) {
440440
super.onItemActionKey(key, event);
441-
this.close();
441+
this.close(event);
442442
}
443443

444444
/**
@@ -527,7 +527,7 @@ export class IgxDropDownComponent extends IgxDropDownBaseDirective implements ID
527527
}
528528
}
529529
if (event) {
530-
this.toggleDirective.close();
530+
this.toggleDirective.close(event);
531531
}
532532
} else {
533533
throw new Error('Please provide a valid drop-down item for the selection!');

0 commit comments

Comments
 (0)