File tree Expand file tree Collapse file tree 4 files changed +24
-1
lines changed
tools/public_api_guard/cdk Expand file tree Collapse file tree 4 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -153,6 +153,18 @@ describe('CdkContextMenuTrigger', () => {
153153 fixture . detectChanges ( ) ;
154154 expect ( getContextMenu ( ) ) . toBeDefined ( ) ;
155155 } ) ;
156+
157+ it ( 'should emit that menu had click outside of it' , ( ) => {
158+ openContextMenu ( ) ;
159+ expect ( getContextMenu ( ) ) . toBeDefined ( ) ;
160+ spyOn ( fixture . componentInstance . trigger . outsideClicked , 'emit' ) ;
161+
162+ fixture . nativeElement . querySelector ( '#other' ) . click ( ) ;
163+ fixture . detectChanges ( ) ;
164+
165+ expect ( fixture . componentInstance . trigger . outsideClicked . emit ) . toHaveBeenCalled ( ) ;
166+ expect ( getContextMenu ( ) ) . not . toBeDefined ( ) ;
167+ } ) ;
156168 } ) ;
157169
158170 describe ( 'nested context menu triggers' , ( ) => {
Original file line number Diff line number Diff line change @@ -75,7 +75,11 @@ export type ContextMenuCoordinates = {x: number; y: number};
7575 { name : 'menuPosition' , alias : 'cdkContextMenuPosition' } ,
7676 { name : 'menuData' , alias : 'cdkContextMenuTriggerData' } ,
7777 ] ,
78- outputs : [ 'opened: cdkContextMenuOpened' , 'closed: cdkContextMenuClosed' ] ,
78+ outputs : [
79+ 'opened: cdkContextMenuOpened' ,
80+ 'closed: cdkContextMenuClosed' ,
81+ 'outsideClicked: cdkContextMenuOutsideClicked' ,
82+ ] ,
7983 providers : [
8084 { provide : MENU_TRIGGER , useExisting : CdkContextMenuTrigger } ,
8185 { provide : MENU_STACK , useClass : MenuStack } ,
@@ -218,6 +222,9 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
218222 if ( ! this . disableCloseOnOutsideClick ) {
219223 this . menuStack . closeAll ( ) ;
220224 }
225+
226+ // Emit that we had a click outside the menu.
227+ this . outsideClicked . emit ( event ) ;
221228 }
222229 } ) ;
223230 }
Original file line number Diff line number Diff line change @@ -73,6 +73,9 @@ export abstract class CdkMenuTriggerBase implements OnDestroy {
7373 /** Emits when the attached menu is requested to close */
7474 readonly closed : EventEmitter < void > = new EventEmitter ( ) ;
7575
76+ /** Emits when the attached menu has click outside of it in open state */
77+ readonly outsideClicked : EventEmitter < MouseEvent > = new EventEmitter ( ) ;
78+
7679 /** Template reference variable to the menu this trigger opens */
7780 menuTemplateRef : TemplateRef < unknown > | null ;
7881
Original file line number Diff line number Diff line change @@ -235,6 +235,7 @@ export abstract class CdkMenuTriggerBase implements OnDestroy {
235235 // (undocumented)
236236 ngOnDestroy(): void ;
237237 readonly opened: EventEmitter <void >;
238+ readonly outsideClicked: EventEmitter <MouseEvent >;
238239 protected overlayRef: OverlayRef | null ;
239240 registerChildMenu(child : Menu ): void ;
240241 protected readonly stopOutsideClicksListener: Observable <void >;
You can’t perform that action at this time.
0 commit comments