UNPKG

ngx-modialog-7

Version:
261 lines 15.8 kB
/** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb2RpYWxvZy03LyIsInNvdXJjZXMiOlsibGliL21vZGVscy9kaWFsb2ctcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFLdEQ7Ozs7O0lBeUJFLG1CQUFtQixPQUFnQixFQUFTLE9BQVc7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFTLFlBQU8sR0FBUCxPQUFPLENBQUk7UUFKL0Msb0JBQWUsR0FBMEIsSUFBSSxnQkFBZ0IsRUFBTyxDQUFDO1FBQ3JFLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUl0RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUtELHNCQUFJLDZCQUFNO1FBSFY7O1dBRUc7Ozs7O1FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3RDLENBQUM7OztPQUFBO0lBRUQ7OztPQUdHOzs7Ozs7SUFDSCxpQ0FBYTs7Ozs7SUFBYixVQUFjLEtBQWlCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRzs7Ozs7O0lBQ0gseUJBQUs7Ozs7O0lBQUwsVUFBTSxNQUFrQjtRQUF4QixpQkFRQztRQVJLLHVCQUFBLEVBQUEsYUFBa0I7O1lBQ2hCLE1BQU07OztRQUFHO1lBQ2IsS0FBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsS0FBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFBO1FB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Ozs7SUFDN0UsK0JBQXdEOzs7OztJQUN4RCwrQkFBK0I7O0lBRW5CLDRCQUF1Qjs7SUFBRSw0QkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJvbWlzZUNvbXBsZXRlciB9IGZyb20gJy4uL2ZyYW1ld29yay91dGlscyc7XG5pbXBvcnQgeyBPdmVybGF5LCBNb2RhbE92ZXJsYXkgfSBmcm9tICcuLi9vdmVybGF5L2luZGV4JztcbmltcG9ydCB7IENsb3NlR3VhcmQgfSBmcm9tICcuLi9tb2RlbHMvdG9rZW5zJztcbmltcG9ydCB7IERpYWxvZ0JhaWxPdXRFcnJvciB9IGZyb20gJy4uL21vZGVscy9lcnJvcnMnO1xuXG4vKipcbiAqIEFQSSB0byBhbiBvcGVuIG1vZGFsIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGNsYXNzIERpYWxvZ1JlZjxUPiB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIG92ZXJsYXkgY29tcG9uZW50IHJlZi5cbiAgICovXG4gIG92ZXJsYXlSZWY6IENvbXBvbmVudFJlZjxNb2RhbE92ZXJsYXk+O1xuXG4gIC8qKlxuICAgKiBTdGF0ZXMgaWYgdGhlIG1vZGFsIGlzIGluc2lkZSBhIHNwZWNpZmljIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgaW5FbGVtZW50OiBib29sZWFuO1xuXG4gIHB1YmxpYyBkZXN0cm95ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZpcmVkIGJlZm9yZSBkaWFsb2cgaXMgZGVzdHJveWVkLlxuICAgKiBObyBuZWVkIHRvIHVuc3Vic2NyaWJlLCBkb25lIGF1dG9tYXRpY2FsbHkuXG4gICAqIE5vdGU6IEFsd2F5cyBjYWxsZWQuXG4gICAqIFdoZW4gY2FsbGVkLCBvdmVybGF5UmVmIG1pZ2h0IG9yIG1pZ2h0IG5vdCBiZSBkZXN0cm95ZWQuXG4gICAqL1xuICBwdWJsaWMgb25EZXN0cm95OiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIHByaXZhdGUgX3Jlc3VsdERlZmVycmVkOiBQcm9taXNlQ29tcGxldGVyPGFueT4gPSBuZXcgUHJvbWlzZUNvbXBsZXRlcjxhbnk+KCk7XG4gIHByaXZhdGUgX29uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgY2xvc2VHdWFyZDogQ2xvc2VHdWFyZDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcmxheTogT3ZlcmxheSwgcHVibGljIGNvbnRleHQ/OiBUKSB7XG4gICAgdGhpcy5vbkRlc3Ryb3kgPSB0aGlzLl9vbkRlc3Ryb3kuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQSBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb24gYSBjbG9zZSBldmVudCBhbmQgcmVqZWN0ZWQgb24gYSBkaXNtaXNzIGV2ZW50LlxuICAgKi9cbiAgZ2V0IHJlc3VsdCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHREZWZlcnJlZC5wcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIGNsb3NlL2Rpc21pc3MgZ3VhcmRcbiAgICogQHBhcmFtIGd1YXJkXG4gICAqL1xuICBzZXRDbG9zZUd1YXJkKGd1YXJkOiBDbG9zZUd1YXJkKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUd1YXJkID0gZ3VhcmQ7XG4gIH1cblxuICAvKipcbiAgICogIENsb3NlIHRoZSBtb2RhbCB3aXRoIGEgcmV0dXJuIHZhbHVlLCBpLmU6IHJlc3VsdC5cbiAgICovXG4gIGNsb3NlKHJlc3VsdDogYW55ID0gbnVsbCkge1xuICAgIGNvbnN0IF9jbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgdGhpcy5fcmVzdWx0RGVmZXJyZWQucmVzb2x2ZShyZXN1bHQpO1xuICAgIH07XG4gICAgdGhpcy5fZmlyZUhvb2s8Ym9vbGVhbj4oJ2JlZm9yZUNsb3NlJylcbiAgICAgIC50aGVuKHZhbHVlID0+IHZhbHVlICE9PSB0cnVlICYmIF9jbG9zZSgpKVxuICAgICAgLmNhdGNoKF9jbG9zZSk7XG4gIH1cblxuICAvKipcbiAgICogIENsb3NlIHRoZSBtb2RhbCB3aXRob3V0IGEgcmV0dXJuIHZhbHVlLCBpLmU6IGNhbmNlbGxlZC5cbiAgICogIFRoaXMgY2FsbCBpcyBhdXRvbWF0aWNhbGx5IGludm9rZWQgd2hlbiBhIHVzZXIgZWl0aGVyOlxuICAgKiAgLSBQcmVzc2VzIGFuIGV4aXQga2V5Ym9hcmQga2V5IChpZiBjb25maWd1cmVkKS5cbiAgICogIC0gQ2xpY2tzIG91dHNpZGUgb2YgdGhlIG1vZGFsIHdpbmRvdyAoaWYgY29uZmlndXJlZCkuXG4gICAqICBVc3VhbGx5LCBkaXNtaXNzIHJlcHJlc2VudCBhIENhbmNlbCBidXR0b24gb3IgYSBYIGJ1dHRvbi5cbiAgICovXG4gIGRpc21pc3MoKSB7XG4gICAgY29uc3QgX2Rpc21pc3MgPSAoKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuX3Jlc3VsdERlZmVycmVkLnByb21pc2UuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgdGhpcy5fcmVzdWx0RGVmZXJyZWQucmVqZWN0KCk7XG4gICAgfTtcbiAgICB0aGlzLl9maXJlSG9vazxib29sZWFuPignYmVmb3JlRGlzbWlzcycpXG4gICAgICAudGhlbih2YWx1ZSA9PiB2YWx1ZSAhPT0gdHJ1ZSAmJiBfZGlzbWlzcygpKVxuICAgICAgLmNhdGNoKF9kaXNtaXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFjZWZ1bGx5IGNsb3NlIHRoZSBvdmVybGF5L2RpYWxvZyB3aXRoIGEgcmVqZWN0ZWQgcmVzdWx0LlxuICAgKiBEb2VzIG5vdCB0cmlnZ2VyIGNhbkRlc3Ryb3kgb24gdGhlIG92ZXJsYXkuXG4gICAqL1xuICBiYWlsT3V0KCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fb25EZXN0cm95Lm5leHQobnVsbCk7XG4gICAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX3Jlc3VsdERlZmVycmVkLnJlamVjdChuZXcgRGlhbG9nQmFpbE91dEVycm9yKCkpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5vdmVybGF5UmVmLmluc3RhbmNlLmNhbkRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmluc3RhbmNlLmNhbkRlc3Ryb3koKVxuICAgICAgICAgIC5jYXRjaCggKCkgPT4ge30pXG4gICAgICAgICAgLnRoZW4gKCAoKSA9PiB0aGlzLl9kZXN0cm95KCkgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KG51bGwpO1xuICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIF9maXJlSG9vazxHPihuYW1lOiAnYmVmb3JlQ2xvc2UnIHwgJ2JlZm9yZURpc21pc3MnKTogUHJvbWlzZTxHPiB7XG4gICAgY29uc3QgZ3VhcmQgPSB0aGlzLmNsb3NlR3VhcmQsXG4gICAgICAgICAgZm46IEZ1bmN0aW9uID0gZ3VhcmQgJiYgdHlwZW9mIGd1YXJkW25hbWVdID09PSAnZnVuY3Rpb24nICYmIGd1YXJkW25hbWVdO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmbiA/IGZuLmNhbGwoZ3VhcmQpIDogZmFsc2UpO1xuICB9XG59XG4iXX0=