3 * Copyright Google Inc. All Rights Reserved.
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
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';
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';
20 /** Builder for overlay position strategy. */
22 export class OverlayPositionBuilder {
23 constructor(private _viewportRuler: ViewportRuler) {}
26 * Creates a free position strategy
28 free(): FreePositionStrategy {
29 return new FreePositionStrategy();
33 * Creates a global position strategy.
35 global(): GlobalPositionStrategy {
36 return new GlobalPositionStrategy();
40 * Creates a relative position strategy.
46 elementRef: ElementRef, originPos: OriginConnectionPosition,
47 overlayPos: OverlayConnectionPosition): ConnectedPositionStrategy {
48 return new ConnectedPositionStrategy(
49 elementRef, originPos, overlayPos, this._viewportRuler);