ngx-modialog-7
Version:
Modal / Dialog for Angular
190 lines • 13.2 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb2RpYWxvZy03LyIsInNvdXJjZXMiOlsibGliL21vZGVscy9kaWFsb2ctcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFLdEQsTUFBTSxPQUFPLFNBQVM7Ozs7O0lBeUJwQixZQUFtQixPQUFnQixFQUFTLE9BQVc7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFTLFlBQU8sR0FBUCxPQUFPLENBQUk7UUFKL0Msb0JBQWUsR0FBMEIsSUFBSSxnQkFBZ0IsRUFBTyxDQUFDO1FBQ3JFLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUl0RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQzs7Ozs7SUFLRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7Ozs7OztJQU1ELGFBQWEsQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDOzs7Ozs7SUFLRCxLQUFLLENBQUMsU0FBYyxJQUFJOztjQUNoQixNQUFNOzs7UUFBRyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBVSxhQUFhLENBQUM7YUFDbkMsSUFBSTs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBQzthQUN6QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkIsQ0FBQzs7Ozs7Ozs7O0lBU0QsT0FBTzs7Y0FDQyxRQUFROzs7UUFBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSzs7O1lBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUE7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFVLGVBQWUsQ0FBQzthQUNyQyxJQUFJOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLFFBQVEsRUFBRSxFQUFDO2FBQzNDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQixDQUFDOzs7Ozs7SUFNRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQzs7OztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBRXRCLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO2dCQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7cUJBQ2xDLEtBQUs7OztnQkFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUM7cUJBQ2hCLElBQUk7OztnQkFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzthQUNuQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDakI7U0FDRjtJQUNILENBQUM7Ozs7O0lBRU8sUUFBUTtRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7Ozs7O0lBRU8sU0FBUyxDQUFJLElBQXFDOztjQUNsRCxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVU7O2NBQ3ZCLEVBQUUsR0FBYSxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFFOUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGOzs7Ozs7SUE5R0MsK0JBQXVDOzs7OztJQUt2Qyw4QkFBMEI7O0lBRTFCLDhCQUEwQjs7Ozs7Ozs7SUFRMUIsOEJBQW1DOzs7OztJQUVuQyxvQ0FBNkU7Ozs7O0lBQzdFLCtCQUF3RDs7Ozs7SUFDeEQsK0JBQStCOztJQUVuQiw0QkFBdUI7O0lBQUUsNEJBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb21pc2VDb21wbGV0ZXIgfSBmcm9tICcuLi9mcmFtZXdvcmsvdXRpbHMnO1xuaW1wb3J0IHsgT3ZlcmxheSwgTW9kYWxPdmVybGF5IH0gZnJvbSAnLi4vb3ZlcmxheS9pbmRleCc7XG5pbXBvcnQgeyBDbG9zZUd1YXJkIH0gZnJvbSAnLi4vbW9kZWxzL3Rva2Vucyc7XG5pbXBvcnQgeyBEaWFsb2dCYWlsT3V0RXJyb3IgfSBmcm9tICcuLi9tb2RlbHMvZXJyb3JzJztcblxuLyoqXG4gKiBBUEkgdG8gYW4gb3BlbiBtb2RhbCB3aW5kb3cuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWFsb2dSZWY8VD4ge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBvdmVybGF5IGNvbXBvbmVudCByZWYuXG4gICAqL1xuICBvdmVybGF5UmVmOiBDb21wb25lbnRSZWY8TW9kYWxPdmVybGF5PjtcblxuICAvKipcbiAgICogU3RhdGVzIGlmIHRoZSBtb2RhbCBpcyBpbnNpZGUgYSBzcGVjaWZpYyBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGluRWxlbWVudDogYm9vbGVhbjtcblxuICBwdWJsaWMgZGVzdHJveWVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaXJlZCBiZWZvcmUgZGlhbG9nIGlzIGRlc3Ryb3llZC5cbiAgICogTm8gbmVlZCB0byB1bnN1YnNjcmliZSwgZG9uZSBhdXRvbWF0aWNhbGx5LlxuICAgKiBOb3RlOiBBbHdheXMgY2FsbGVkLlxuICAgKiBXaGVuIGNhbGxlZCwgb3ZlcmxheVJlZiBtaWdodCBvciBtaWdodCBub3QgYmUgZGVzdHJveWVkLlxuICAgKi9cbiAgcHVibGljIG9uRGVzdHJveTogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICBwcml2YXRlIF9yZXN1bHREZWZlcnJlZDogUHJvbWlzZUNvbXBsZXRlcjxhbnk+ID0gbmV3IFByb21pc2VDb21wbGV0ZXI8YW55PigpO1xuICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNsb3NlR3VhcmQ6IENsb3NlR3VhcmQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG92ZXJsYXk6IE92ZXJsYXksIHB1YmxpYyBjb250ZXh0PzogVCkge1xuICAgIHRoaXMub25EZXN0cm95ID0gdGhpcy5fb25EZXN0cm95LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uIGEgY2xvc2UgZXZlbnQgYW5kIHJlamVjdGVkIG9uIGEgZGlzbWlzcyBldmVudC5cbiAgICovXG4gIGdldCByZXN1bHQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0RGVmZXJyZWQucHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBjbG9zZS9kaXNtaXNzIGd1YXJkXG4gICAqIEBwYXJhbSBndWFyZFxuICAgKi9cbiAgc2V0Q2xvc2VHdWFyZChndWFyZDogQ2xvc2VHdWFyZCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VHdWFyZCA9IGd1YXJkO1xuICB9XG5cbiAgLyoqXG4gICAqICBDbG9zZSB0aGUgbW9kYWwgd2l0aCBhIHJldHVybiB2YWx1ZSwgaS5lOiByZXN1bHQuXG4gICAqL1xuICBjbG9zZShyZXN1bHQ6IGFueSA9IG51bGwpIHtcbiAgICBjb25zdCBfY2xvc2UgPSAoKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuX3Jlc3VsdERlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiAgICB9O1xuICAgIHRoaXMuX2ZpcmVIb29rPGJvb2xlYW4+KCdiZWZvcmVDbG9zZScpXG4gICAgICAudGhlbih2YWx1ZSA9PiB2YWx1ZSAhPT0gdHJ1ZSAmJiBfY2xvc2UoKSlcbiAgICAgIC5jYXRjaChfY2xvc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqICBDbG9zZSB0aGUgbW9kYWwgd2l0aG91dCBhIHJldHVybiB2YWx1ZSwgaS5lOiBjYW5jZWxsZWQuXG4gICAqICBUaGlzIGNhbGwgaXMgYXV0b21hdGljYWxseSBpbnZva2VkIHdoZW4gYSB1c2VyIGVpdGhlcjpcbiAgICogIC0gUHJlc3NlcyBhbiBleGl0IGtleWJvYXJkIGtleSAoaWYgY29uZmlndXJlZCkuXG4gICAqICAtIENsaWNrcyBvdXRzaWRlIG9mIHRoZSBtb2RhbCB3aW5kb3cgKGlmIGNvbmZpZ3VyZWQpLlxuICAgKiAgVXN1YWxseSwgZGlzbWlzcyByZXByZXNlbnQgYSBDYW5jZWwgYnV0dG9uIG9yIGEgWCBidXR0b24uXG4gICAqL1xuICBkaXNtaXNzKCkge1xuICAgIGNvbnN0IF9kaXNtaXNzID0gKCkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9yZXN1bHREZWZlcnJlZC5wcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIHRoaXMuX3Jlc3VsdERlZmVycmVkLnJlamVjdCgpO1xuICAgIH07XG4gICAgdGhpcy5fZmlyZUhvb2s8Ym9vbGVhbj4oJ2JlZm9yZURpc21pc3MnKVxuICAgICAgLnRoZW4odmFsdWUgPT4gdmFsdWUgIT09IHRydWUgJiYgX2Rpc21pc3MoKSlcbiAgICAgIC5jYXRjaChfZGlzbWlzcyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhY2VmdWxseSBjbG9zZSB0aGUgb3ZlcmxheS9kaWFsb2cgd2l0aCBhIHJlamVjdGVkIHJlc3VsdC5cbiAgICogRG9lcyBub3QgdHJpZ2dlciBjYW5EZXN0cm95IG9uIHRoZSBvdmVybGF5LlxuICAgKi9cbiAgYmFpbE91dCgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9yZXN1bHREZWZlcnJlZC5yZWplY3QobmV3IERpYWxvZ0JhaWxPdXRFcnJvcigpKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMub3ZlcmxheVJlZi5pbnN0YW5jZS5jYW5EZXN0cm95ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5pbnN0YW5jZS5jYW5EZXN0cm95KClcbiAgICAgICAgICAuY2F0Y2goICgpID0+IHt9KVxuICAgICAgICAgIC50aGVuICggKCkgPT4gdGhpcy5fZGVzdHJveSgpICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dChudWxsKTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlyZUhvb2s8Rz4obmFtZTogJ2JlZm9yZUNsb3NlJyB8ICdiZWZvcmVEaXNtaXNzJyk6IFByb21pc2U8Rz4ge1xuICAgIGNvbnN0IGd1YXJkID0gdGhpcy5jbG9zZUd1YXJkLFxuICAgICAgICAgIGZuOiBGdW5jdGlvbiA9IGd1YXJkICYmIHR5cGVvZiBndWFyZFtuYW1lXSA9PT0gJ2Z1bmN0aW9uJyAmJiBndWFyZFtuYW1lXTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZm4gPyBmbi5jYWxsKGd1YXJkKSA6IGZhbHNlKTtcbiAgfVxufVxuIl19