1
1
import { Component , ViewChild , ElementRef , ViewChildren , QueryList } from '@angular/core' ;
2
- import { TestBed , ComponentFixture } from '@angular/core/testing' ;
2
+ import { TestBed , ComponentFixture , fakeAsync , tick } from '@angular/core/testing' ;
3
3
import { CdkMenu } from './menu' ;
4
4
import { CdkContextMenuTrigger } from './context-menu-trigger' ;
5
5
import { dispatchKeyboardEvent , dispatchMouseEvent } from '../testing/private' ;
@@ -8,6 +8,8 @@ import {CdkMenuItem} from './menu-item';
8
8
import { CdkMenuTrigger } from './menu-trigger' ;
9
9
import { CdkMenuBar } from './menu-bar' ;
10
10
import { LEFT_ARROW , RIGHT_ARROW } from '../keycodes' ;
11
+ import { OverlayContainer } from '../overlay' ;
12
+ import { CDK_MENU_DEFAULT_OPTIONS } from './menu-trigger-base' ;
11
13
12
14
describe ( 'CdkContextMenuTrigger' , ( ) => {
13
15
describe ( 'with simple context menu trigger' , ( ) => {
@@ -380,6 +382,77 @@ describe('CdkContextMenuTrigger', () => {
380
382
} ) ;
381
383
} ) ;
382
384
385
+ describe ( 'with backdrop in options' , ( ) => {
386
+ let fixture : ComponentFixture < SimpleContextMenu > ;
387
+ let overlayContainerElement : HTMLElement ;
388
+
389
+ beforeEach ( ( ) => {
390
+ fixture = TestBed . createComponent ( SimpleContextMenu ) ;
391
+ fixture . detectChanges ( ) ;
392
+ } ) ;
393
+
394
+ /** Get the context in which the context menu should trigger. */
395
+ function getMenuTrigger ( ) {
396
+ return fixture . componentInstance . triggerElement . nativeElement ;
397
+ }
398
+
399
+ /** Open up the context menu and run change detection. */
400
+ function openContextMenu ( ) {
401
+ // right click triggers a context menu event
402
+ dispatchMouseEvent ( getMenuTrigger ( ) , 'contextmenu' ) ;
403
+ fixture . detectChanges ( ) ;
404
+ }
405
+
406
+ it ( 'should not contain backdrop by default' , fakeAsync ( ( ) => {
407
+ openContextMenu ( ) ;
408
+ overlayContainerElement = TestBed . inject ( OverlayContainer ) . getContainerElement ( ) ;
409
+ fixture . detectChanges ( ) ;
410
+ tick ( 500 ) ;
411
+ expect ( overlayContainerElement . querySelector ( '.cdk-overlay-backdrop' ) ) . toBeFalsy ( ) ;
412
+ } ) ) ;
413
+
414
+ it ( 'should be able to add the backdrop using hasBackdrop option' , fakeAsync ( ( ) => {
415
+ TestBed . resetTestingModule ( ) ;
416
+ TestBed . configureTestingModule ( {
417
+ providers : [ { provide : CDK_MENU_DEFAULT_OPTIONS , useValue : { hasBackdrop : true } } ] ,
418
+ } ) ;
419
+
420
+ fixture = TestBed . createComponent ( SimpleContextMenu ) ;
421
+ fixture . detectChanges ( ) ;
422
+
423
+ openContextMenu ( ) ;
424
+
425
+ overlayContainerElement = TestBed . inject ( OverlayContainer ) . getContainerElement ( ) ;
426
+ fixture . detectChanges ( ) ;
427
+ tick ( 500 ) ;
428
+
429
+ expect ( overlayContainerElement . querySelector ( '.cdk-overlay-backdrop' ) ) . toBeTruthy ( ) ;
430
+ } ) ) ;
431
+
432
+ it ( 'should be able to add the custom backdrop class using backdropClass option' , fakeAsync ( ( ) => {
433
+ TestBed . resetTestingModule ( ) ;
434
+ TestBed . configureTestingModule ( {
435
+ providers : [
436
+ {
437
+ provide : CDK_MENU_DEFAULT_OPTIONS ,
438
+ useValue : { hasBackdrop : true , backdropClass : 'custom-backdrop' } ,
439
+ } ,
440
+ ] ,
441
+ } ) ;
442
+
443
+ fixture = TestBed . createComponent ( SimpleContextMenu ) ;
444
+ fixture . detectChanges ( ) ;
445
+
446
+ openContextMenu ( ) ;
447
+
448
+ overlayContainerElement = TestBed . inject ( OverlayContainer ) . getContainerElement ( ) ;
449
+ fixture . detectChanges ( ) ;
450
+ tick ( 500 ) ;
451
+
452
+ expect ( overlayContainerElement . querySelector ( '.custom-backdrop' ) ) . toBeTruthy ( ) ;
453
+ } ) ) ;
454
+ } ) ;
455
+
383
456
describe ( 'with shared triggered menu' , ( ) => {
384
457
it ( 'should allow a context menu and menubar trigger share a menu' , ( ) => {
385
458
const fixture = TestBed . createComponent ( MenuBarAndContextTriggerShareMenu ) ;
0 commit comments