@angular2-material/core
Version:
Angular 2 Material core
94 lines (92 loc) • 4.19 kB
JavaScript
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