ngx-modialog-7
Version:
Modal / Dialog for Angular
134 lines • 10.6 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1vZGlhbG9nLTcvIiwic291cmNlcyI6WyJsaWIvb3ZlcmxheS9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQW9CLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7TUFHM0MsTUFBTSxHQUFHLElBQUksY0FBYyxFQUFPO0FBR3hDLE1BQU0sT0FBTyxPQUFPOzs7OztJQUtsQixZQUFvQixjQUErQixFQUFZLFFBQWtCO1FBQTdELG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUFZLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDakYsQ0FBQzs7OztJQUxELElBQUksV0FBVztRQUNiLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDOzs7Ozs7O0lBVUQsU0FBUyxDQUFDLFNBQXlCO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7OztJQUVELGFBQWEsQ0FBQyxTQUF5QjtRQUNyQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxTQUF5QjtRQUN4QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBRUQsUUFBUSxDQUFDLFNBQWMsSUFBSTtRQUN2QixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7Ozs7O0lBT0QsSUFBSSxDQUEyQixNQUFxQixFQUFFLEtBQVc7O2NBQ3pELGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYTs7WUFDdEMsVUFBVSxHQUE0QixFQUFFO1FBRTVDLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ3JDLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLG1CQUFBLGFBQWEsRUFBVSxDQUFDLENBQUM7U0FDM0Q7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdkMsVUFBVSxHQUFHLG1CQUFBLGFBQWEsRUFBTyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxhQUFhLEVBQUU7WUFDeEIsVUFBVSxHQUFHLG1CQUFBLENBQUMsYUFBYSxDQUFDLEVBQU8sQ0FBQztTQUNyQzthQUFNO1lBQ0wsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7UUFFRCxPQUFPLFVBQVU7YUFDZCxHQUFHOzs7O1FBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLENBQUM7SUFDL0YsQ0FBQzs7Ozs7Ozs7O0lBRU8sYUFBYSxDQUFDLFFBQXlCLEVBQ3pCLEtBQXVCLEVBQ3ZCLE1BQXFCLEVBQ3JCLEtBQVU7UUFFOUIsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQixNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDakM7O2NBRUssTUFBTSxHQUFHLElBQUksU0FBUyxDQUFNLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUM3RCxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDOztjQUUxRCxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFOUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7O1lBM0VGLFVBQVU7Ozs7WUFSRixlQUFlO1lBRmUsUUFBUTs7Ozs7OztJQWdCakMsaUNBQXVDOzs7OztJQUFFLDJCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdDb250YWluZXJSZWYsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE92ZXJsYXlSZW5kZXJlciwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy90b2tlbnMnO1xuaW1wb3J0IHsgRGlhbG9nUmVmU3RhY2sgfSBmcm9tICcuLi9tb2RlbHMvZGlhbG9nLXJlZi1zdGFjayc7XG5pbXBvcnQgeyB2Y1JlZlN0b3JlIH0gZnJvbSAnLi4vbW9kZWxzL3ZjLXJlZi1zdG9yZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuLi9tb2RlbHMvZGlhbG9nLXJlZic7XG5pbXBvcnQgeyBPdmVybGF5Q29udGV4dCB9IGZyb20gJy4uL21vZGVscy9vdmVybGF5LWNvbnRleHQnO1xuXG5jb25zdCBfc3RhY2sgPSBuZXcgRGlhbG9nUmVmU3RhY2s8YW55PigpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3ZlcmxheSB7XG4gIGdldCBzdGFja0xlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiBfc3RhY2subGVuZ3RoO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbW9kYWxSZW5kZXJlcjogT3ZlcmxheVJlbmRlcmVyLCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBnaXZlbiBEaWFsb2dSZWYgaXMgdGhlIHRvcCBtb3N0IHJlZiBpbiB0aGUgc3RhY2suXG4gICAqIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gYm9keSBtb2RhbCB2cyBpbiBlbGVtZW50IG1vZGFsLlxuICAgKiBAcGFyYW0gZGlhbG9nUmVmXG4gICAqL1xuICBpc1RvcE1vc3QoZGlhbG9nUmVmOiBEaWFsb2dSZWY8YW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBfc3RhY2suaW5kZXhPZihkaWFsb2dSZWYpID09PSBfc3RhY2subGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHN0YWNrUG9zaXRpb24oZGlhbG9nUmVmOiBEaWFsb2dSZWY8YW55Pikge1xuICAgIHJldHVybiBfc3RhY2suaW5kZXhPZihkaWFsb2dSZWYpO1xuICB9XG5cbiAgZ3JvdXBTdGFja0xlbmd0aChkaWFsb2dSZWY6IERpYWxvZ1JlZjxhbnk+KTogbnVtYmVyIHtcbiAgICByZXR1cm4gX3N0YWNrLmdyb3VwTGVuZ3RoKF9zdGFjay5ncm91cE9mKGRpYWxvZ1JlZikpO1xuICB9XG5cbiAgY2xvc2VBbGwocmVzdWx0OiBhbnkgPSBudWxsKTogdm9pZCB7XG4gICAgICBfc3RhY2suY2xvc2VBbGwocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG92ZXJsYXkgYW5kIHJldHVybnMgYSBkaWFsb2cgcmVmLlxuICAgKiBAcGFyYW0gY29uZmlnIGluc3RydWN0aW9ucyBob3cgdG8gY3JlYXRlIHRoZSBvdmVybGF5XG4gICAqIEBwYXJhbSBncm91cCBBIHRva2VuIHRvIGFzc29jaWF0ZSB0aGUgbmV3IG92ZXJsYXkgd2l0aCwgdXNlZCBmb3IgcmVmZXJlbmNlIChzdGFja3MgdXN1YWxseSlcbiAgICovXG4gIG9wZW48VCBleHRlbmRzIE92ZXJsYXlDb250ZXh0Pihjb25maWc6IE92ZXJsYXlDb25maWcsIGdyb3VwPzogYW55KTogRGlhbG9nUmVmPFQ+W10ge1xuICAgIGNvbnN0IHZpZXdDb250YWluZXIgPSBjb25maWcudmlld0NvbnRhaW5lcjtcbiAgICBsZXQgY29udGFpbmVyczogQXJyYXk8Vmlld0NvbnRhaW5lclJlZj4gPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygdmlld0NvbnRhaW5lciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnRhaW5lcnMgPSB2Y1JlZlN0b3JlLmdldFZDUmVmKHZpZXdDb250YWluZXIgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmlld0NvbnRhaW5lcikpIHtcbiAgICAgIGNvbnRhaW5lcnMgPSB2aWV3Q29udGFpbmVyIGFzIGFueTtcbiAgICB9IGVsc2UgaWYgKHZpZXdDb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lcnMgPSBbdmlld0NvbnRhaW5lcl0gYXMgYW55O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXJzID0gW251bGxdO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZXJzXG4gICAgICAubWFwKCB2YyA9PiB0aGlzLmNyZWF0ZU92ZXJsYXkoY29uZmlnLnJlbmRlcmVyIHx8IHRoaXMuX21vZGFsUmVuZGVyZXIsIHZjLCBjb25maWcsIGdyb3VwKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkocmVuZGVyZXI6IE92ZXJsYXlSZW5kZXJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBPdmVybGF5Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGFueSk6IERpYWxvZ1JlZjxhbnk+IHtcblxuICAgIGlmIChjb25maWcuY29udGV4dCkge1xuICAgICAgY29uZmlnLmNvbnRleHQubm9ybWFsaXplKCk7XG4gICAgfVxuXG4gICAgaWYgKCFjb25maWcuaW5qZWN0b3IpIHtcbiAgICAgIGNvbmZpZy5pbmplY3RvciA9IHRoaXMuaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nID0gbmV3IERpYWxvZ1JlZjxhbnk+KHRoaXMsIGNvbmZpZy5jb250ZXh0IHx8IHt9KTtcbiAgICBkaWFsb2cuaW5FbGVtZW50ID0gY29uZmlnLmNvbnRleHQgJiYgISFjb25maWcuY29udGV4dC5pbkVsZW1lbnQ7XG5cbiAgICBjb25zdCBjbXBSZWYgPSByZW5kZXJlci5yZW5kZXIoZGlhbG9nLCB2Y1JlZiwgY29uZmlnLmluamVjdG9yKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkaWFsb2csICdvdmVybGF5UmVmJywge3ZhbHVlOiBjbXBSZWZ9KTtcbiAgICBfc3RhY2sucHVzaE1hbmFnZWQoZGlhbG9nLCBncm91cCk7XG5cbiAgICByZXR1cm4gZGlhbG9nO1xuICB9XG59XG4iXX0=