8
8
dispatchEvent ,
9
9
} from '@angular/cdk/testing/private' ;
10
10
import { ESCAPE , A } from '@angular/cdk/keycodes' ;
11
- import { CdkConnectedOverlay , OverlayModule , CdkOverlayOrigin } from './index' ;
11
+ import { Overlay , CdkConnectedOverlay , OverlayModule , CdkOverlayOrigin } from './index' ;
12
12
import { OverlayContainer } from './overlay-container' ;
13
13
import {
14
14
ConnectedOverlayPositionChange ,
@@ -18,6 +18,7 @@ import {FlexibleConnectedPositionStrategy} from './position/flexible-connected-p
18
18
19
19
20
20
describe ( 'Overlay directives' , ( ) => {
21
+ let overlay : Overlay ;
21
22
let overlayContainer : OverlayContainer ;
22
23
let overlayContainerElement : HTMLElement ;
23
24
let fixture : ComponentFixture < ConnectedOverlayDirectiveTest > ;
@@ -36,8 +37,9 @@ describe('Overlay directives', () => {
36
37
fixture . detectChanges ( ) ;
37
38
} ) ;
38
39
39
- beforeEach ( inject ( [ OverlayContainer ] , ( oc : OverlayContainer ) => {
40
+ beforeEach ( inject ( [ OverlayContainer , Overlay ] , ( oc : OverlayContainer , o : Overlay ) => {
40
41
overlayContainer = oc ;
42
+ overlay = o ;
41
43
overlayContainerElement = oc . getContainerElement ( ) ;
42
44
} ) ) ;
43
45
@@ -62,6 +64,27 @@ describe('Overlay directives', () => {
62
64
expect ( overlayContainerElement . textContent ) . toBe ( '' ) ;
63
65
} ) ;
64
66
67
+ it ( 'can change positionStrategy via input' , ( ) => {
68
+ const expectedPositionStrategy =
69
+ overlay . position ( )
70
+ . flexibleConnectedTo ( document . body )
71
+ . withFlexibleDimensions ( true )
72
+ . withPositions ( [
73
+
74
+ { originX : 'start' , originY : 'top' , overlayX : 'start' , overlayY : 'top' } ,
75
+ ] ) ;
76
+ fixture . componentInstance . isOpen = true ;
77
+ fixture . componentInstance . positionStrategy = expectedPositionStrategy ;
78
+ fixture . detectChanges ( ) ;
79
+
80
+ const testComponent : ConnectedOverlayDirectiveTest = fixture . debugElement . componentInstance ;
81
+ const overlayDirective = testComponent . connectedOverlayDirective ;
82
+ const actualPositionStrategy = overlayDirective . overlayRef . getConfig ( ) . positionStrategy as
83
+ FlexibleConnectedPositionStrategy ;
84
+
85
+ expect ( expectedPositionStrategy ) . toBe ( actualPositionStrategy ) ;
86
+ } ) ;
87
+
65
88
it ( 'should destroy the overlay when the directive is destroyed' , ( ) => {
66
89
fixture . componentInstance . isOpen = true ;
67
90
fixture . detectChanges ( ) ;
@@ -575,6 +598,7 @@ describe('Overlay directives', () => {
575
598
[cdkConnectedOverlayOpen]="isOpen"
576
599
[cdkConnectedOverlayWidth]="width"
577
600
[cdkConnectedOverlayHeight]="height"
601
+ [cdkConnectedOverlayPositionStrategy]="positionStrategy"
578
602
[cdkConnectedOverlayOrigin]="triggerOverride || trigger"
579
603
[cdkConnectedOverlayHasBackdrop]="hasBackdrop"
580
604
[cdkConnectedOverlayViewportMargin]="viewportMargin"
@@ -606,6 +630,7 @@ class ConnectedOverlayDirectiveTest {
606
630
width : number | string ;
607
631
height : number | string ;
608
632
minWidth : number | string ;
633
+ positionStrategy : FlexibleConnectedPositionStrategy ;
609
634
minHeight : number | string ;
610
635
offsetX : number ;
611
636
offsetY : number ;
0 commit comments