UNPKG

@angular2-material/core

Version:
94 lines (92 loc) 4.19 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { ComponentFactoryResolver, Injectable } from '@angular/core'; import { OverlayState } from './overlay-state'; import { DomPortalHost } from '../portal/dom-portal-host'; import { OverlayRef } from './overlay-ref'; import { OverlayPositionBuilder } from './position/overlay-position-builder'; import { ViewportRuler } from './position/viewport-ruler'; import { OverlayContainer } from './overlay-container'; /** Next overlay unique ID. */ var nextUniqueId = 0; /** The default state for newly created overlays. */ var defaultState = new OverlayState(); /** * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be * used as a low-level building building block for other components. Dialogs, tooltips, menus, * selects, etc. can all be built using overlays. The service should primarily be used by authors * of re-usable components rather than developers building end-user applications. * * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one. */ export var Overlay = (function () { function Overlay(_overlayContainer, _componentFactoryResolver, _positionBuilder) { this._overlayContainer = _overlayContainer; this._componentFactoryResolver = _componentFactoryResolver; this._positionBuilder = _positionBuilder; } /** * Creates an overlay. * @param state State to apply to the overlay. * @returns A reference to the created overlay. */ Overlay.prototype.create = function (state) { if (state === void 0) { state = defaultState; } return this._createOverlayRef(this._createPaneElement(), state); }; /** * Returns a position builder that can be used, via fluent API, * to construct and configure a position strategy. */ Overlay.prototype.position = function () { return this._positionBuilder; }; /** * Creates the DOM element for an overlay and appends it to the overlay container. * @returns Promise resolving to the created element. */ Overlay.prototype._createPaneElement = function () { var pane = document.createElement('div'); pane.id = "md-overlay-" + nextUniqueId++; pane.classList.add('md-overlay-pane'); this._overlayContainer.getContainerElement().appendChild(pane); return pane; }; /** * Create a DomPortalHost into which the overlay content can be loaded. * @param pane The DOM element to turn into a portal host. * @returns A portal host for the given DOM element. */ Overlay.prototype._createPortalHost = function (pane) { return new DomPortalHost(pane, this._componentFactoryResolver); }; /** * Creates an OverlayRef for an overlay in the given DOM element. * @param pane DOM element for the overlay * @param state * @returns {OverlayRef} */ Overlay.prototype._createOverlayRef = function (pane, state) { return new OverlayRef(this._createPortalHost(pane), pane, state); }; Overlay = __decorate([ Injectable(), __metadata('design:paramtypes', [OverlayContainer, ComponentFactoryResolver, OverlayPositionBuilder]) ], Overlay); return Overlay; }()); /** Providers for Overlay and its related injectables. */ export var OVERLAY_PROVIDERS = [ ViewportRuler, OverlayPositionBuilder, Overlay, OverlayContainer, ]; //# sourceMappingURL=overlay.js.map