From 8cb3959fff07e26dd99d16f9a8ec3ab93b3c89cf Mon Sep 17 00:00:00 2001 From: gentoo90 Date: Sun, 9 Feb 2020 12:17:35 +0200 Subject: [PATCH] fix(modal): pass modalRef as an argument into beforeDismiss callback Fixes #3464 --- src/modal/modal-config.ts | 7 ++++--- src/modal/modal-ref.ts | 4 ++-- src/modal/modal.ts | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/modal/modal-config.ts b/src/modal/modal-config.ts index 6fd657adf9..adee91108d 100644 --- a/src/modal/modal-config.ts +++ b/src/modal/modal-config.ts @@ -1,10 +1,11 @@ import { Injectable, Injector } from '@angular/core'; import { NgbConfig } from '../ngb-config'; +import { NgbModalRef } from './modal-ref'; /** * Options available when opening new modal windows with `NgbModal.open()` method. */ -export interface NgbModalOptions { +export interface NgbModalOptions { /** * If `true`, modal opening and closing will be animated. * @@ -45,7 +46,7 @@ export interface NgbModalOptions { * * then the modal won't be dismissed. */ - beforeDismiss?: () => boolean | Promise; + beforeDismiss?: (modalRef: NgbModalRef) => boolean | Promise; /** * If `true`, the modal will be centered vertically. @@ -151,7 +152,7 @@ export class NgbModalConfig implements Required { ariaLabelledBy: string; ariaDescribedBy: string; backdrop: boolean | 'static' = true; - beforeDismiss: () => boolean | Promise; + beforeDismiss: (modalRef: NgbModalRef) => boolean | Promise; centered: boolean; container: string | HTMLElement; fullscreen: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string = false; diff --git a/src/modal/modal-ref.ts b/src/modal/modal-ref.ts index 0b18c9fbb3..961f08fd65 100644 --- a/src/modal/modal-ref.ts +++ b/src/modal/modal-ref.ts @@ -160,7 +160,7 @@ export class NgbModalRef { private _windowCmptRef: ComponentRef, private _contentRef: ContentRef, private _backdropCmptRef?: ComponentRef, - private _beforeDismiss?: () => boolean | Promise, + private _beforeDismiss?: (modalRef: NgbModalRef) => boolean | Promise, ) { _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => { this.dismiss(reason); @@ -202,7 +202,7 @@ export class NgbModalRef { if (!this._beforeDismiss) { this._dismiss(reason); } else { - const dismiss = this._beforeDismiss(); + const dismiss = this._beforeDismiss(this); if (isPromise(dismiss)) { dismiss.then( (result) => { diff --git a/src/modal/modal.ts b/src/modal/modal.ts index d2c19ec94b..0170985a4c 100644 --- a/src/modal/modal.ts +++ b/src/modal/modal.ts @@ -23,7 +23,7 @@ export class NgbModal { * * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options. */ - open(content: T, options: NgbModalOptions = {}): NgbModalRef { + open(content: T, options: NgbModalOptions = {}): NgbModalRef { const combinedOptions = { ...this._config, animation: this._config.animation, ...options }; return this._modalStack.open(this._injector, content, combinedOptions); }