ngx-modialog-10
Version:
Modal / Dialog for Angular
190 lines • 13.4 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
*/
export class DialogRef {
/**
* @param {?} overlay
* @param {?=} context
*/
constructor(overlay, context) {
this.overlay = overlay;
this.context = context;
this._resultDeferred = new PromiseCompleter();
this._onDestroy = new Subject();
this.onDestroy = this._onDestroy.asObservable();
}
/**
* A Promise that is resolved on a close event and rejected on a dismiss event.
* @return {?}
*/
get result() {
return this._resultDeferred.promise;
}
/**
* Set a close/dismiss guard
* @param {?} guard
* @return {?}
*/
setCloseGuard(guard) {
this.closeGuard = guard;
}
/**
* Close the modal with a return value, i.e: result.
* @param {?=} result
* @return {?}
*/
close(result = null) {
/** @type {?} */
const _close = (/**
* @return {?}
*/
() => {
this.destroy();
this._resultDeferred.resolve(result);
});
this._fireHook('beforeClose')
.then((/**
* @param {?} value
* @return {?}
*/
value => 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.
* @return {?}
*/
dismiss() {
/** @type {?} */
const _dismiss = (/**
* @return {?}
*/
() => {
this.destroy();
this._resultDeferred.promise.catch((/**
* @return {?}
*/
() => { }));
this._resultDeferred.reject();
});
this._fireHook('beforeDismiss')
.then((/**
* @param {?} value
* @return {?}
*/
value => value !== true && _dismiss()))
.catch(_dismiss);
}
/**
* Gracefully close the overlay/dialog with a rejected result.
* Does not trigger canDestroy on the overlay.
* @return {?}
*/
bailOut() {
if (this.destroyed !== true) {
this.destroyed = true;
this._onDestroy.next(null);
this._onDestroy.complete();
this._resultDeferred.reject(new DialogBailOutError());
}
}
/**
* @return {?}
*/
destroy() {
if (this.destroyed !== true) {
this.destroyed = true;
if (typeof this.overlayRef.instance.canDestroy === 'function') {
this.overlayRef.instance.canDestroy()
.catch((/**
* @return {?}
*/
() => { }))
.then((/**
* @return {?}
*/
() => this._destroy()));
}
else {
this._destroy();
}
}
}
/**
* @private
* @return {?}
*/
_destroy() {
this._onDestroy.next(null);
this._onDestroy.complete();
this.overlayRef.destroy();
}
/**
* @private
* @template G
* @param {?} name
* @return {?}
*/
_fireHook(name) {
/** @type {?} */
const guard = this.closeGuard;
/** @type {?} */
const fn = guard && typeof guard[name] === 'function' && guard[name];
return Promise.resolve(fn ? fn.call(guard) : false);
}
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb2RpYWxvZy0xMC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvZGlhbG9nLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBS3RELE1BQU0sT0FBTyxTQUFTOzs7OztJQXlCcEIsWUFBbUIsT0FBZ0IsRUFBUyxPQUFXO1FBQXBDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFJO1FBSi9DLG9CQUFlLEdBQTBCLElBQUksZ0JBQWdCLEVBQU8sQ0FBQztRQUNyRSxlQUFVLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFJdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7Ozs7O0lBS0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDOzs7Ozs7SUFNRCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs7Ozs7O0lBS0QsS0FBSyxDQUFDLFNBQWMsSUFBSTs7Y0FDaEIsTUFBTTs7O1FBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQyxTQUFTLENBQVUsYUFBYSxDQUFDO2FBQ25DLElBQUk7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxFQUFFLEVBQUM7YUFDekMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLENBQUM7Ozs7Ozs7OztJQVNELE9BQU87O2NBQ0MsUUFBUTs7O1FBQUcsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUs7OztZQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBVSxlQUFlLENBQUM7YUFDckMsSUFBSTs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxRQUFRLEVBQUUsRUFBQzthQUMzQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckIsQ0FBQzs7Ozs7O0lBTUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7Ozs7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUV0QixJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtnQkFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO3FCQUNsQyxLQUFLOzs7Z0JBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFDO3FCQUNoQixJQUFJOzs7Z0JBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7Ozs7OztJQUVPLFNBQVMsQ0FBSSxJQUFxQzs7Y0FDbEQsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVOztjQUN2QixFQUFFLEdBQWEsS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRTlFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjs7Ozs7O0lBOUdDLCtCQUF1Qzs7Ozs7SUFLdkMsOEJBQTBCOztJQUUxQiw4QkFBMEI7Ozs7Ozs7O0lBUTFCLDhCQUFtQzs7Ozs7SUFFbkMsb0NBQTZFOzs7OztJQUM3RSwrQkFBd0Q7Ozs7O0lBQ3hELCtCQUErQjs7SUFFbkIsNEJBQXVCOztJQUFFLDRCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQcm9taXNlQ29tcGxldGVyIH0gZnJvbSAnLi4vZnJhbWV3b3JrL3V0aWxzJztcbmltcG9ydCB7IE92ZXJsYXksIE1vZGFsT3ZlcmxheSB9IGZyb20gJy4uL292ZXJsYXkvaW5kZXgnO1xuaW1wb3J0IHsgQ2xvc2VHdWFyZCB9IGZyb20gJy4uL21vZGVscy90b2tlbnMnO1xuaW1wb3J0IHsgRGlhbG9nQmFpbE91dEVycm9yIH0gZnJvbSAnLi4vbW9kZWxzL2Vycm9ycyc7XG5cbi8qKlxuICogQVBJIHRvIGFuIG9wZW4gbW9kYWwgd2luZG93LlxuICovXG5leHBvcnQgY2xhc3MgRGlhbG9nUmVmPFQ+IHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgb3ZlcmxheSBjb21wb25lbnQgcmVmLlxuICAgKi9cbiAgb3ZlcmxheVJlZjogQ29tcG9uZW50UmVmPE1vZGFsT3ZlcmxheT47XG5cbiAgLyoqXG4gICAqIFN0YXRlcyBpZiB0aGUgbW9kYWwgaXMgaW5zaWRlIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBpbkVsZW1lbnQ6IGJvb2xlYW47XG5cbiAgcHVibGljIGRlc3Ryb3llZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogRmlyZWQgYmVmb3JlIGRpYWxvZyBpcyBkZXN0cm95ZWQuXG4gICAqIE5vIG5lZWQgdG8gdW5zdWJzY3JpYmUsIGRvbmUgYXV0b21hdGljYWxseS5cbiAgICogTm90ZTogQWx3YXlzIGNhbGxlZC5cbiAgICogV2hlbiBjYWxsZWQsIG92ZXJsYXlSZWYgbWlnaHQgb3IgbWlnaHQgbm90IGJlIGRlc3Ryb3llZC5cbiAgICovXG4gIHB1YmxpYyBvbkRlc3Ryb3k6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgcHJpdmF0ZSBfcmVzdWx0RGVmZXJyZWQ6IFByb21pc2VDb21wbGV0ZXI8YW55PiA9IG5ldyBQcm9taXNlQ29tcGxldGVyPGFueT4oKTtcbiAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjbG9zZUd1YXJkOiBDbG9zZUd1YXJkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVybGF5OiBPdmVybGF5LCBwdWJsaWMgY29udGV4dD86IFQpIHtcbiAgICB0aGlzLm9uRGVzdHJveSA9IHRoaXMuX29uRGVzdHJveS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbiBhIGNsb3NlIGV2ZW50IGFuZCByZWplY3RlZCBvbiBhIGRpc21pc3MgZXZlbnQuXG4gICAqL1xuICBnZXQgcmVzdWx0KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdERlZmVycmVkLnByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgY2xvc2UvZGlzbWlzcyBndWFyZFxuICAgKiBAcGFyYW0gZ3VhcmRcbiAgICovXG4gIHNldENsb3NlR3VhcmQoZ3VhcmQ6IENsb3NlR3VhcmQpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlR3VhcmQgPSBndWFyZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQ2xvc2UgdGhlIG1vZGFsIHdpdGggYSByZXR1cm4gdmFsdWUsIGkuZTogcmVzdWx0LlxuICAgKi9cbiAgY2xvc2UocmVzdWx0OiBhbnkgPSBudWxsKSB7XG4gICAgY29uc3QgX2Nsb3NlID0gKCkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9yZXN1bHREZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XG4gICAgfTtcbiAgICB0aGlzLl9maXJlSG9vazxib29sZWFuPignYmVmb3JlQ2xvc2UnKVxuICAgICAgLnRoZW4odmFsdWUgPT4gdmFsdWUgIT09IHRydWUgJiYgX2Nsb3NlKCkpXG4gICAgICAuY2F0Y2goX2Nsb3NlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQ2xvc2UgdGhlIG1vZGFsIHdpdGhvdXQgYSByZXR1cm4gdmFsdWUsIGkuZTogY2FuY2VsbGVkLlxuICAgKiAgVGhpcyBjYWxsIGlzIGF1dG9tYXRpY2FsbHkgaW52b2tlZCB3aGVuIGEgdXNlciBlaXRoZXI6XG4gICAqICAtIFByZXNzZXMgYW4gZXhpdCBrZXlib2FyZCBrZXkgKGlmIGNvbmZpZ3VyZWQpLlxuICAgKiAgLSBDbGlja3Mgb3V0c2lkZSBvZiB0aGUgbW9kYWwgd2luZG93IChpZiBjb25maWd1cmVkKS5cbiAgICogIFVzdWFsbHksIGRpc21pc3MgcmVwcmVzZW50IGEgQ2FuY2VsIGJ1dHRvbiBvciBhIFggYnV0dG9uLlxuICAgKi9cbiAgZGlzbWlzcygpIHtcbiAgICBjb25zdCBfZGlzbWlzcyA9ICgpID0+IHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgdGhpcy5fcmVzdWx0RGVmZXJyZWQucHJvbWlzZS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICB0aGlzLl9yZXN1bHREZWZlcnJlZC5yZWplY3QoKTtcbiAgICB9O1xuICAgIHRoaXMuX2ZpcmVIb29rPGJvb2xlYW4+KCdiZWZvcmVEaXNtaXNzJylcbiAgICAgIC50aGVuKHZhbHVlID0+IHZhbHVlICE9PSB0cnVlICYmIF9kaXNtaXNzKCkpXG4gICAgICAuY2F0Y2goX2Rpc21pc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYWNlZnVsbHkgY2xvc2UgdGhlIG92ZXJsYXkvZGlhbG9nIHdpdGggYSByZWplY3RlZCByZXN1bHQuXG4gICAqIERvZXMgbm90IHRyaWdnZXIgY2FuRGVzdHJveSBvbiB0aGUgb3ZlcmxheS5cbiAgICovXG4gIGJhaWxPdXQoKSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dChudWxsKTtcbiAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fcmVzdWx0RGVmZXJyZWQucmVqZWN0KG5ldyBEaWFsb2dCYWlsT3V0RXJyb3IoKSk7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLm92ZXJsYXlSZWYuaW5zdGFuY2UuY2FuRGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuaW5zdGFuY2UuY2FuRGVzdHJveSgpXG4gICAgICAgICAgLmNhdGNoKCAoKSA9PiB7fSlcbiAgICAgICAgICAudGhlbiAoICgpID0+IHRoaXMuX2Rlc3Ryb3koKSApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb25EZXN0cm95Lm5leHQobnVsbCk7XG4gICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcmVIb29rPEc+KG5hbWU6ICdiZWZvcmVDbG9zZScgfCAnYmVmb3JlRGlzbWlzcycpOiBQcm9taXNlPEc+IHtcbiAgICBjb25zdCBndWFyZCA9IHRoaXMuY2xvc2VHdWFyZCxcbiAgICAgICAgICBmbjogRnVuY3Rpb24gPSBndWFyZCAmJiB0eXBlb2YgZ3VhcmRbbmFtZV0gPT09ICdmdW5jdGlvbicgJiYgZ3VhcmRbbmFtZV07XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZuID8gZm4uY2FsbChndWFyZCkgOiBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==