UNPKG

4.19 kBJavaScriptView Raw
1var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5 return c > 3 && r && Object.defineProperty(target, key, r), r;
6};
7var __metadata = (this && this.__metadata) || function (k, v) {
8 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9};
10import { ComponentFactoryResolver, Injectable } from '@angular/core';
11import { OverlayState } from './overlay-state';
12import { DomPortalHost } from '../portal/dom-portal-host';
13import { OverlayRef } from './overlay-ref';
14import { OverlayPositionBuilder } from './position/overlay-position-builder';
15import { ViewportRuler } from './position/viewport-ruler';
16import { OverlayContainer } from './overlay-container';
17/** Next overlay unique ID. */
18var nextUniqueId = 0;
19/** The default state for newly created overlays. */
20var defaultState = new OverlayState();
21/**
22 * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be
23 * used as a low-level building building block for other components. Dialogs, tooltips, menus,
24 * selects, etc. can all be built using overlays. The service should primarily be used by authors
25 * of re-usable components rather than developers building end-user applications.
26 *
27 * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.
28 */
29export var Overlay = (function () {
30 function Overlay(_overlayContainer, _componentFactoryResolver, _positionBuilder) {
31 this._overlayContainer = _overlayContainer;
32 this._componentFactoryResolver = _componentFactoryResolver;
33 this._positionBuilder = _positionBuilder;
34 }
35 /**
36 * Creates an overlay.
37 * @param state State to apply to the overlay.
38 * @returns A reference to the created overlay.
39 */
40 Overlay.prototype.create = function (state) {
41 if (state === void 0) { state = defaultState; }
42 return this._createOverlayRef(this._createPaneElement(), state);
43 };
44 /**
45 * Returns a position builder that can be used, via fluent API,
46 * to construct and configure a position strategy.
47 */
48 Overlay.prototype.position = function () {
49 return this._positionBuilder;
50 };
51 /**
52 * Creates the DOM element for an overlay and appends it to the overlay container.
53 * @returns Promise resolving to the created element.
54 */
55 Overlay.prototype._createPaneElement = function () {
56 var pane = document.createElement('div');
57 pane.id = "md-overlay-" + nextUniqueId++;
58 pane.classList.add('md-overlay-pane');
59 this._overlayContainer.getContainerElement().appendChild(pane);
60 return pane;
61 };
62 /**
63 * Create a DomPortalHost into which the overlay content can be loaded.
64 * @param pane The DOM element to turn into a portal host.
65 * @returns A portal host for the given DOM element.
66 */
67 Overlay.prototype._createPortalHost = function (pane) {
68 return new DomPortalHost(pane, this._componentFactoryResolver);
69 };
70 /**
71 * Creates an OverlayRef for an overlay in the given DOM element.
72 * @param pane DOM element for the overlay
73 * @param state
74 * @returns {OverlayRef}
75 */
76 Overlay.prototype._createOverlayRef = function (pane, state) {
77 return new OverlayRef(this._createPortalHost(pane), pane, state);
78 };
79 Overlay = __decorate([
80 Injectable(),
81 __metadata('design:paramtypes', [OverlayContainer, ComponentFactoryResolver, OverlayPositionBuilder])
82 ], Overlay);
83 return Overlay;
84}());
85/** Providers for Overlay and its related injectables. */
86export var OVERLAY_PROVIDERS = [
87 ViewportRuler,
88 OverlayPositionBuilder,
89 Overlay,
90 OverlayContainer,
91];
92
93//# sourceMappingURL=overlay.js.map