0f6735eb75e51aff242518ca6e1e2435252a3e3e
[sdc/sdc-workflow-designer.git] /
1 /**
2  * @license
3  * Copyright Google Inc. All Rights Reserved.
4  *
5  * Use of this source code is governed by an MIT-style license that can be
6  * found in the LICENSE file at https://angular.io/license
7  */
8 /* tslint:disable:array-type member-access variable-name typedef
9  only-arrow-functions directive-class-suffix component-class-suffix
10  component-selector no-unnecessary-type-assertion arrow-parens*/
11 import {ElementRef, Injectable} from '@angular/core';
12
13 import {OriginConnectionPosition, OverlayConnectionPosition} from './connected-position';
14 import {ConnectedPositionStrategy} from './connected-position-strategy';
15 import {FreePositionStrategy} from './free-position-strategy';
16 import {GlobalPositionStrategy} from './global-position-strategy';
17 import {ViewportRuler} from './viewport-ruler';
18
19
20 /** Builder for overlay position strategy. */
21 @Injectable()
22 export class OverlayPositionBuilder {
23   constructor(private _viewportRuler: ViewportRuler) {}
24
25   /**
26    * Creates a free position strategy
27    */
28   free(): FreePositionStrategy {
29         return new FreePositionStrategy();
30   }
31
32   /**
33    * Creates a global position strategy.
34    */
35   global(): GlobalPositionStrategy {
36         return new GlobalPositionStrategy();
37   }
38
39   /**
40    * Creates a relative position strategy.
41    * @param elementRef
42    * @param originPos
43    * @param overlayPos
44    */
45   connectedTo(
46                 elementRef: ElementRef, originPos: OriginConnectionPosition,
47                 overlayPos: OverlayConnectionPosition): ConnectedPositionStrategy {
48         return new ConnectedPositionStrategy(
49                 elementRef, originPos, overlayPos, this._viewportRuler);
50   }
51 }