ngx-modialog-10
Version:
Modal / Dialog for Angular
134 lines • 10.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/overlay/overlay.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Injector } from '@angular/core';
import { OverlayRenderer } from '../models/tokens';
import { DialogRefStack } from '../models/dialog-ref-stack';
import { vcRefStore } from '../models/vc-ref-store';
import { DialogRef } from '../models/dialog-ref';
/** @type {?} */
const _stack = new DialogRefStack();
export class Overlay {
/**
* @param {?} _modalRenderer
* @param {?} injector
*/
constructor(_modalRenderer, injector) {
this._modalRenderer = _modalRenderer;
this.injector = injector;
}
/**
* @return {?}
*/
get stackLength() {
return _stack.length;
}
/**
* Check if a given DialogRef is the top most ref in the stack.
* TODO: distinguish between body modal vs in element modal.
* @param {?} dialogRef
* @return {?}
*/
isTopMost(dialogRef) {
return _stack.indexOf(dialogRef) === _stack.length - 1;
}
/**
* @param {?} dialogRef
* @return {?}
*/
stackPosition(dialogRef) {
return _stack.indexOf(dialogRef);
}
/**
* @param {?} dialogRef
* @return {?}
*/
groupStackLength(dialogRef) {
return _stack.groupLength(_stack.groupOf(dialogRef));
}
/**
* @param {?=} result
* @return {?}
*/
closeAll(result = null) {
_stack.closeAll(result);
}
/**
* Creates an overlay and returns a dialog ref.
* @template T
* @param {?} config instructions how to create the overlay
* @param {?=} group A token to associate the new overlay with, used for reference (stacks usually)
* @return {?}
*/
open(config, group) {
/** @type {?} */
const viewContainer = config.viewContainer;
/** @type {?} */
let containers = [];
if (typeof viewContainer === 'string') {
containers = vcRefStore.getVCRef((/** @type {?} */ (viewContainer)));
}
else if (Array.isArray(viewContainer)) {
containers = (/** @type {?} */ (viewContainer));
}
else if (viewContainer) {
containers = (/** @type {?} */ ([viewContainer]));
}
else {
containers = [null];
}
return containers
.map((/**
* @param {?} vc
* @return {?}
*/
vc => this.createOverlay(config.renderer || this._modalRenderer, vc, config, group)));
}
/**
* @private
* @param {?} renderer
* @param {?} vcRef
* @param {?} config
* @param {?} group
* @return {?}
*/
createOverlay(renderer, vcRef, config, group) {
if (config.context) {
config.context.normalize();
}
if (!config.injector) {
config.injector = this.injector;
}
/** @type {?} */
const dialog = new DialogRef(this, config.context || {});
dialog.inElement = config.context && !!config.context.inElement;
/** @type {?} */
const cmpRef = renderer.render(dialog, vcRef, config.injector);
Object.defineProperty(dialog, 'overlayRef', { value: cmpRef });
_stack.pushManaged(dialog, group);
return dialog;
}
}
Overlay.decorators = [
{ type: Injectable }
];
/** @nocollapse */
Overlay.ctorParameters = () => [
{ type: OverlayRenderer },
{ type: Injector }
];
if (false) {
/**
* @type {?}
* @private
*/
Overlay.prototype._modalRenderer;
/**
* @type {?}
* @protected
*/
Overlay.prototype.injector;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1vZGlhbG9nLTEwLyIsInNvdXJjZXMiOlsibGliL292ZXJsYXkvb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFvQixVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O01BRzNDLE1BQU0sR0FBRyxJQUFJLGNBQWMsRUFBTztBQUd4QyxNQUFNLE9BQU8sT0FBTzs7Ozs7SUFLbEIsWUFBb0IsY0FBK0IsRUFBWSxRQUFrQjtRQUE3RCxtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ2pGLENBQUM7Ozs7SUFMRCxJQUFJLFdBQVc7UUFDYixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7Ozs7OztJQVVELFNBQVMsQ0FBQyxTQUF5QjtRQUNqQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7SUFFRCxhQUFhLENBQUMsU0FBeUI7UUFDckMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsU0FBeUI7UUFDeEMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7OztJQUVELFFBQVEsQ0FBQyxTQUFjLElBQUk7UUFDdkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7Ozs7OztJQU9ELElBQUksQ0FBMkIsTUFBcUIsRUFBRSxLQUFXOztjQUN6RCxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWE7O1lBQ3RDLFVBQVUsR0FBNEIsRUFBRTtRQUU1QyxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUNyQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxhQUFhLEVBQVUsQ0FBQyxDQUFDO1NBQzNEO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3ZDLFVBQVUsR0FBRyxtQkFBQSxhQUFhLEVBQU8sQ0FBQztTQUNuQzthQUFNLElBQUksYUFBYSxFQUFFO1lBQ3hCLFVBQVUsR0FBRyxtQkFBQSxDQUFDLGFBQWEsQ0FBQyxFQUFPLENBQUM7U0FDckM7YUFBTTtZQUNMLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JCO1FBRUQsT0FBTyxVQUFVO2FBQ2QsR0FBRzs7OztRQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxDQUFDO0lBQy9GLENBQUM7Ozs7Ozs7OztJQUVPLGFBQWEsQ0FBQyxRQUF5QixFQUN6QixLQUF1QixFQUN2QixNQUFxQixFQUNyQixLQUFVO1FBRTlCLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2pDOztjQUVLLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBTSxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0QsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQzs7Y0FFMUQsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO1FBRTlELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OztZQTNFRixVQUFVOzs7O1lBUkYsZUFBZTtZQUZlLFFBQVE7Ozs7Ozs7SUFnQmpDLGlDQUF1Qzs7Ozs7SUFBRSwyQkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPdmVybGF5UmVuZGVyZXIsIE92ZXJsYXlDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvdG9rZW5zJztcbmltcG9ydCB7IERpYWxvZ1JlZlN0YWNrIH0gZnJvbSAnLi4vbW9kZWxzL2RpYWxvZy1yZWYtc3RhY2snO1xuaW1wb3J0IHsgdmNSZWZTdG9yZSB9IGZyb20gJy4uL21vZGVscy92Yy1yZWYtc3RvcmUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnLi4vbW9kZWxzL2RpYWxvZy1yZWYnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRleHQgfSBmcm9tICcuLi9tb2RlbHMvb3ZlcmxheS1jb250ZXh0JztcblxuY29uc3QgX3N0YWNrID0gbmV3IERpYWxvZ1JlZlN0YWNrPGFueT4oKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE92ZXJsYXkge1xuICBnZXQgc3RhY2tMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gX3N0YWNrLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZGFsUmVuZGVyZXI6IE92ZXJsYXlSZW5kZXJlciwgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gRGlhbG9nUmVmIGlzIHRoZSB0b3AgbW9zdCByZWYgaW4gdGhlIHN0YWNrLlxuICAgKiBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGJvZHkgbW9kYWwgdnMgaW4gZWxlbWVudCBtb2RhbC5cbiAgICogQHBhcmFtIGRpYWxvZ1JlZlxuICAgKi9cbiAgaXNUb3BNb3N0KGRpYWxvZ1JlZjogRGlhbG9nUmVmPGFueT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gX3N0YWNrLmluZGV4T2YoZGlhbG9nUmVmKSA9PT0gX3N0YWNrLmxlbmd0aCAtIDE7XG4gIH1cblxuICBzdGFja1Bvc2l0aW9uKGRpYWxvZ1JlZjogRGlhbG9nUmVmPGFueT4pIHtcbiAgICByZXR1cm4gX3N0YWNrLmluZGV4T2YoZGlhbG9nUmVmKTtcbiAgfVxuXG4gIGdyb3VwU3RhY2tMZW5ndGgoZGlhbG9nUmVmOiBEaWFsb2dSZWY8YW55Pik6IG51bWJlciB7XG4gICAgcmV0dXJuIF9zdGFjay5ncm91cExlbmd0aChfc3RhY2suZ3JvdXBPZihkaWFsb2dSZWYpKTtcbiAgfVxuXG4gIGNsb3NlQWxsKHJlc3VsdDogYW55ID0gbnVsbCk6IHZvaWQge1xuICAgICAgX3N0YWNrLmNsb3NlQWxsKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBvdmVybGF5IGFuZCByZXR1cm5zIGEgZGlhbG9nIHJlZi5cbiAgICogQHBhcmFtIGNvbmZpZyBpbnN0cnVjdGlvbnMgaG93IHRvIGNyZWF0ZSB0aGUgb3ZlcmxheVxuICAgKiBAcGFyYW0gZ3JvdXAgQSB0b2tlbiB0byBhc3NvY2lhdGUgdGhlIG5ldyBvdmVybGF5IHdpdGgsIHVzZWQgZm9yIHJlZmVyZW5jZSAoc3RhY2tzIHVzdWFsbHkpXG4gICAqL1xuICBvcGVuPFQgZXh0ZW5kcyBPdmVybGF5Q29udGV4dD4oY29uZmlnOiBPdmVybGF5Q29uZmlnLCBncm91cD86IGFueSk6IERpYWxvZ1JlZjxUPltdIHtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyID0gY29uZmlnLnZpZXdDb250YWluZXI7XG4gICAgbGV0IGNvbnRhaW5lcnM6IEFycmF5PFZpZXdDb250YWluZXJSZWY+ID0gW107XG5cbiAgICBpZiAodHlwZW9mIHZpZXdDb250YWluZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250YWluZXJzID0gdmNSZWZTdG9yZS5nZXRWQ1JlZih2aWV3Q29udGFpbmVyIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZpZXdDb250YWluZXIpKSB7XG4gICAgICBjb250YWluZXJzID0gdmlld0NvbnRhaW5lciBhcyBhbnk7XG4gICAgfSBlbHNlIGlmICh2aWV3Q29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXJzID0gW3ZpZXdDb250YWluZXJdIGFzIGFueTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVycyA9IFtudWxsXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVyc1xuICAgICAgLm1hcCggdmMgPT4gdGhpcy5jcmVhdGVPdmVybGF5KGNvbmZpZy5yZW5kZXJlciB8fCB0aGlzLl9tb2RhbFJlbmRlcmVyLCB2YywgY29uZmlnLCBncm91cCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KHJlbmRlcmVyOiBPdmVybGF5UmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2Y1JlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogT3ZlcmxheUNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiBhbnkpOiBEaWFsb2dSZWY8YW55PiB7XG5cbiAgICBpZiAoY29uZmlnLmNvbnRleHQpIHtcbiAgICAgIGNvbmZpZy5jb250ZXh0Lm5vcm1hbGl6ZSgpO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLmluamVjdG9yKSB7XG4gICAgICBjb25maWcuaW5qZWN0b3IgPSB0aGlzLmluamVjdG9yO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZyA9IG5ldyBEaWFsb2dSZWY8YW55Pih0aGlzLCBjb25maWcuY29udGV4dCB8fCB7fSk7XG4gICAgZGlhbG9nLmluRWxlbWVudCA9IGNvbmZpZy5jb250ZXh0ICYmICEhY29uZmlnLmNvbnRleHQuaW5FbGVtZW50O1xuXG4gICAgY29uc3QgY21wUmVmID0gcmVuZGVyZXIucmVuZGVyKGRpYWxvZywgdmNSZWYsIGNvbmZpZy5pbmplY3Rvcik7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGlhbG9nLCAnb3ZlcmxheVJlZicsIHt2YWx1ZTogY21wUmVmfSk7XG4gICAgX3N0YWNrLnB1c2hNYW5hZ2VkKGRpYWxvZywgZ3JvdXApO1xuXG4gICAgcmV0dXJuIGRpYWxvZztcbiAgfVxufVxuIl19