ngx-modialog-10
Version:
Modal / Dialog for Angular
261 lines • 16 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/models/dialog-ref.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Subject } from 'rxjs';
import { PromiseCompleter } from '../framework/utils';
import { DialogBailOutError } from '../models/errors';
/**
* API to an open modal window.
* @template T
*/
var /**
* API to an open modal window.
* @template T
*/
DialogRef = /** @class */ (function () {
function DialogRef(overlay, context) {
this.overlay = overlay;
this.context = context;
this._resultDeferred = new PromiseCompleter();
this._onDestroy = new Subject();
this.onDestroy = this._onDestroy.asObservable();
}
Object.defineProperty(DialogRef.prototype, "result", {
/**
* A Promise that is resolved on a close event and rejected on a dismiss event.
*/
get: /**
* A Promise that is resolved on a close event and rejected on a dismiss event.
* @return {?}
*/
function () {
return this._resultDeferred.promise;
},
enumerable: true,
configurable: true
});
/**
* Set a close/dismiss guard
* @param guard
*/
/**
* Set a close/dismiss guard
* @param {?} guard
* @return {?}
*/
DialogRef.prototype.setCloseGuard = /**
* Set a close/dismiss guard
* @param {?} guard
* @return {?}
*/
function (guard) {
this.closeGuard = guard;
};
/**
* Close the modal with a return value, i.e: result.
*/
/**
* Close the modal with a return value, i.e: result.
* @param {?=} result
* @return {?}
*/
DialogRef.prototype.close = /**
* Close the modal with a return value, i.e: result.
* @param {?=} result
* @return {?}
*/
function (result) {
var _this = this;
if (result === void 0) { result = null; }
/** @type {?} */
var _close = (/**
* @return {?}
*/
function () {
_this.destroy();
_this._resultDeferred.resolve(result);
});
this._fireHook('beforeClose')
.then((/**
* @param {?} value
* @return {?}
*/
function (value) { return value !== true && _close(); }))
.catch(_close);
};
/**
* Close the modal without a return value, i.e: cancelled.
* This call is automatically invoked when a user either:
* - Presses an exit keyboard key (if configured).
* - Clicks outside of the modal window (if configured).
* Usually, dismiss represent a Cancel button or a X button.
*/
/**
* Close the modal without a return value, i.e: cancelled.
* This call is automatically invoked when a user either:
* - Presses an exit keyboard key (if configured).
* - Clicks outside of the modal window (if configured).
* Usually, dismiss represent a Cancel button or a X button.
* @return {?}
*/
DialogRef.prototype.dismiss = /**
* Close the modal without a return value, i.e: cancelled.
* This call is automatically invoked when a user either:
* - Presses an exit keyboard key (if configured).
* - Clicks outside of the modal window (if configured).
* Usually, dismiss represent a Cancel button or a X button.
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var _dismiss = (/**
* @return {?}
*/
function () {
_this.destroy();
_this._resultDeferred.promise.catch((/**
* @return {?}
*/
function () { }));
_this._resultDeferred.reject();
});
this._fireHook('beforeDismiss')
.then((/**
* @param {?} value
* @return {?}
*/
function (value) { return value !== true && _dismiss(); }))
.catch(_dismiss);
};
/**
* Gracefully close the overlay/dialog with a rejected result.
* Does not trigger canDestroy on the overlay.
*/
/**
* Gracefully close the overlay/dialog with a rejected result.
* Does not trigger canDestroy on the overlay.
* @return {?}
*/
DialogRef.prototype.bailOut = /**
* Gracefully close the overlay/dialog with a rejected result.
* Does not trigger canDestroy on the overlay.
* @return {?}
*/
function () {
if (this.destroyed !== true) {
this.destroyed = true;
this._onDestroy.next(null);
this._onDestroy.complete();
this._resultDeferred.reject(new DialogBailOutError());
}
};
/**
* @return {?}
*/
DialogRef.prototype.destroy = /**
* @return {?}
*/
function () {
var _this = this;
if (this.destroyed !== true) {
this.destroyed = true;
if (typeof this.overlayRef.instance.canDestroy === 'function') {
this.overlayRef.instance.canDestroy()
.catch((/**
* @return {?}
*/
function () { }))
.then((/**
* @return {?}
*/
function () { return _this._destroy(); }));
}
else {
this._destroy();
}
}
};
/**
* @private
* @return {?}
*/
DialogRef.prototype._destroy = /**
* @private
* @return {?}
*/
function () {
this._onDestroy.next(null);
this._onDestroy.complete();
this.overlayRef.destroy();
};
/**
* @private
* @template G
* @param {?} name
* @return {?}
*/
DialogRef.prototype._fireHook = /**
* @private
* @template G
* @param {?} name
* @return {?}
*/
function (name) {
/** @type {?} */
var guard = this.closeGuard;
/** @type {?} */
var fn = guard && typeof guard[name] === 'function' && guard[name];
return Promise.resolve(fn ? fn.call(guard) : false);
};
return DialogRef;
}());
/**
* API to an open modal window.
* @template T
*/
export { DialogRef };
if (false) {
/**
* Reference to the overlay component ref.
* @type {?}
*/
DialogRef.prototype.overlayRef;
/**
* States if the modal is inside a specific element.
* @type {?}
*/
DialogRef.prototype.inElement;
/** @type {?} */
DialogRef.prototype.destroyed;
/**
* Fired before dialog is destroyed.
* No need to unsubscribe, done automatically.
* Note: Always called.
* When called, overlayRef might or might not be destroyed.
* @type {?}
*/
DialogRef.prototype.onDestroy;
/**
* @type {?}
* @private
*/
DialogRef.prototype._resultDeferred;
/**
* @type {?}
* @private
*/
DialogRef.prototype._onDestroy;
/**
* @type {?}
* @private
*/
DialogRef.prototype.closeGuard;
/** @type {?} */
DialogRef.prototype.overlay;
/** @type {?} */
DialogRef.prototype.context;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb2RpYWxvZy0xMC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvZGlhbG9nLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBS3REOzs7OztJQXlCRSxtQkFBbUIsT0FBZ0IsRUFBUyxPQUFXO1FBQXBDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFJO1FBSi9DLG9CQUFlLEdBQTBCLElBQUksZ0JBQWdCLEVBQU8sQ0FBQztRQUNyRSxlQUFVLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFJdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFLRCxzQkFBSSw2QkFBTTtRQUhWOztXQUVHOzs7OztRQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUN0QyxDQUFDOzs7T0FBQTtJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gsaUNBQWE7Ozs7O0lBQWIsVUFBYyxLQUFpQjtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNILHlCQUFLOzs7OztJQUFMLFVBQU0sTUFBa0I7UUFBeEIsaUJBUUM7UUFSSyx1QkFBQSxFQUFBLGFBQWtCOztZQUNoQixNQUFNOzs7UUFBRztZQUNiLEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLEtBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQTtR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Ozs7O0lBQzdFLCtCQUF3RDs7Ozs7SUFDeEQsK0JBQStCOztJQUVuQiw0QkFBdUI7O0lBQUUsNEJBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb21pc2VDb21wbGV0ZXIgfSBmcm9tICcuLi9mcmFtZXdvcmsvdXRpbHMnO1xuaW1wb3J0IHsgT3ZlcmxheSwgTW9kYWxPdmVybGF5IH0gZnJvbSAnLi4vb3ZlcmxheS9pbmRleCc7XG5pbXBvcnQgeyBDbG9zZUd1YXJkIH0gZnJvbSAnLi4vbW9kZWxzL3Rva2Vucyc7XG5pbXBvcnQgeyBEaWFsb2dCYWlsT3V0RXJyb3IgfSBmcm9tICcuLi9tb2RlbHMvZXJyb3JzJztcblxuLyoqXG4gKiBBUEkgdG8gYW4gb3BlbiBtb2RhbCB3aW5kb3cuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWFsb2dSZWY8VD4ge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBvdmVybGF5IGNvbXBvbmVudCByZWYuXG4gICAqL1xuICBvdmVybGF5UmVmOiBDb21wb25lbnRSZWY8TW9kYWxPdmVybGF5PjtcblxuICAvKipcbiAgICogU3RhdGVzIGlmIHRoZSBtb2RhbCBpcyBpbnNpZGUgYSBzcGVjaWZpYyBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGluRWxlbWVudDogYm9vbGVhbjtcblxuICBwdWJsaWMgZGVzdHJveWVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaXJlZCBiZWZvcmUgZGlhbG9nIGlzIGRlc3Ryb3llZC5cbiAgICogTm8gbmVlZCB0byB1bnN1YnNjcmliZSwgZG9uZSBhdXRvbWF0aWNhbGx5LlxuICAgKiBOb3RlOiBBbHdheXMgY2FsbGVkLlxuICAgKiBXaGVuIGNhbGxlZCwgb3ZlcmxheVJlZiBtaWdodCBvciBtaWdodCBub3QgYmUgZGVzdHJveWVkLlxuICAgKi9cbiAgcHVibGljIG9uRGVzdHJveTogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICBwcml2YXRlIF9yZXN1bHREZWZlcnJlZDogUHJvbWlzZUNvbXBsZXRlcjxhbnk+ID0gbmV3IFByb21pc2VDb21wbGV0ZXI8YW55PigpO1xuICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNsb3NlR3VhcmQ6IENsb3NlR3VhcmQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG92ZXJsYXk6IE92ZXJsYXksIHB1YmxpYyBjb250ZXh0PzogVCkge1xuICAgIHRoaXMub25EZXN0cm95ID0gdGhpcy5fb25EZXN0cm95LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uIGEgY2xvc2UgZXZlbnQgYW5kIHJlamVjdGVkIG9uIGEgZGlzbWlzcyBldmVudC5cbiAgICovXG4gIGdldCByZXN1bHQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0RGVmZXJyZWQucHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBjbG9zZS9kaXNtaXNzIGd1YXJkXG4gICAqIEBwYXJhbSBndWFyZFxuICAgKi9cbiAgc2V0Q2xvc2VHdWFyZChndWFyZDogQ2xvc2VHdWFyZCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VHdWFyZCA9IGd1YXJkO1xuICB9XG5cbiAgLyoqXG4gICAqICBDbG9zZSB0aGUgbW9kYWwgd2l0aCBhIHJldHVybiB2YWx1ZSwgaS5lOiByZXN1bHQuXG4gICAqL1xuICBjbG9zZShyZXN1bHQ6IGFueSA9IG51bGwpIHtcbiAgICBjb25zdCBfY2xvc2UgPSAoKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuX3Jlc3VsdERlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiAgICB9O1xuICAgIHRoaXMuX2ZpcmVIb29rPGJvb2xlYW4+KCdiZWZvcmVDbG9zZScpXG4gICAgICAudGhlbih2YWx1ZSA9PiB2YWx1ZSAhPT0gdHJ1ZSAmJiBfY2xvc2UoKSlcbiAgICAgIC5jYXRjaChfY2xvc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqICBDbG9zZSB0aGUgbW9kYWwgd2l0aG91dCBhIHJldHVybiB2YWx1ZSwgaS5lOiBjYW5jZWxsZWQuXG4gICAqICBUaGlzIGNhbGwgaXMgYXV0b21hdGljYWxseSBpbnZva2VkIHdoZW4gYSB1c2VyIGVpdGhlcjpcbiAgICogIC0gUHJlc3NlcyBhbiBleGl0IGtleWJvYXJkIGtleSAoaWYgY29uZmlndXJlZCkuXG4gICAqICAtIENsaWNrcyBvdXRzaWRlIG9mIHRoZSBtb2RhbCB3aW5kb3cgKGlmIGNvbmZpZ3VyZWQpLlxuICAgKiAgVXN1YWxseSwgZGlzbWlzcyByZXByZXNlbnQgYSBDYW5jZWwgYnV0dG9uIG9yIGEgWCBidXR0b24uXG4gICAqL1xuICBkaXNtaXNzKCkge1xuICAgIGNvbnN0IF9kaXNtaXNzID0gKCkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9yZXN1bHREZWZlcnJlZC5wcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIHRoaXMuX3Jlc3VsdERlZmVycmVkLnJlamVjdCgpO1xuICAgIH07XG4gICAgdGhpcy5fZmlyZUhvb2s8Ym9vbGVhbj4oJ2JlZm9yZURpc21pc3MnKVxuICAgICAgLnRoZW4odmFsdWUgPT4gdmFsdWUgIT09IHRydWUgJiYgX2Rpc21pc3MoKSlcbiAgICAgIC5jYXRjaChfZGlzbWlzcyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhY2VmdWxseSBjbG9zZSB0aGUgb3ZlcmxheS9kaWFsb2cgd2l0aCBhIHJlamVjdGVkIHJlc3VsdC5cbiAgICogRG9lcyBub3QgdHJpZ2dlciBjYW5EZXN0cm95IG9uIHRoZSBvdmVybGF5LlxuICAgKi9cbiAgYmFpbE91dCgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9yZXN1bHREZWZlcnJlZC5yZWplY3QobmV3IERpYWxvZ0JhaWxPdXRFcnJvcigpKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMub3ZlcmxheVJlZi5pbnN0YW5jZS5jYW5EZXN0cm95ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5pbnN0YW5jZS5jYW5EZXN0cm95KClcbiAgICAgICAgICAuY2F0Y2goICgpID0+IHt9KVxuICAgICAgICAgIC50aGVuICggKCkgPT4gdGhpcy5fZGVzdHJveSgpICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dChudWxsKTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlyZUhvb2s8Rz4obmFtZTogJ2JlZm9yZUNsb3NlJyB8ICdiZWZvcmVEaXNtaXNzJyk6IFByb21pc2U8Rz4ge1xuICAgIGNvbnN0IGd1YXJkID0gdGhpcy5jbG9zZUd1YXJkLFxuICAgICAgICAgIGZuOiBGdW5jdGlvbiA9IGd1YXJkICYmIHR5cGVvZiBndWFyZFtuYW1lXSA9PT0gJ2Z1bmN0aW9uJyAmJiBndWFyZFtuYW1lXTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZm4gPyBmbi5jYWxsKGd1YXJkKSA6IGZhbHNlKTtcbiAgfVxufVxuIl19