Skip to content

Commit 5611947

Browse files
crisbetotinayuangao
authored andcommitted
fix(overlay): expose event object in backdropClick stream (#9716)
Exposes the click event object when subscribing to the `OverlayRef.backdropClick` stream. Fixes #9713.
1 parent b652683 commit 5611947

File tree

4 files changed

+7
-6
lines changed

4 files changed

+7
-6
lines changed

src/cdk-experimental/dialog/dialog-ref.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class DialogRef<T, R = any> {
6262
}
6363

6464
/** Gets an observable that emits when the overlay's backdrop has been clicked. */
65-
backdropClick(): Observable<void> {
65+
backdropClick(): Observable<MouseEvent> {
6666
return this._overlayRef.backdropClick();
6767
}
6868

src/cdk/overlay/overlay-ref.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export type ImmutableObject<T> = {
2727
*/
2828
export class OverlayRef implements PortalOutlet {
2929
private _backdropElement: HTMLElement | null = null;
30-
private _backdropClick: Subject<any> = new Subject();
30+
private _backdropClick: Subject<MouseEvent> = new Subject();
3131
private _attachments = new Subject<void>();
3232
private _detachments = new Subject<void>();
3333

@@ -181,7 +181,7 @@ export class OverlayRef implements PortalOutlet {
181181
}
182182

183183
/** Gets an observable that emits when the backdrop has been clicked. */
184-
backdropClick(): Observable<void> {
184+
backdropClick(): Observable<MouseEvent> {
185185
return this._backdropClick.asObservable();
186186
}
187187

@@ -278,7 +278,8 @@ export class OverlayRef implements PortalOutlet {
278278

279279
// Forward backdrop clicks such that the consumer of the overlay can perform whatever
280280
// action desired when such a click occurs (usually closing the overlay).
281-
this._backdropElement.addEventListener('click', () => this._backdropClick.next(null));
281+
this._backdropElement.addEventListener('click',
282+
(event: MouseEvent) => this._backdropClick.next(event));
282283

283284
// Add class to fade-in the backdrop after one frame.
284285
if (typeof requestAnimationFrame !== 'undefined') {

src/cdk/overlay/overlay.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ describe('Overlay', () => {
388388
overlayRef.backdropClick().subscribe(backdropClickHandler);
389389

390390
backdrop.click();
391-
expect(backdropClickHandler).toHaveBeenCalled();
391+
expect(backdropClickHandler).toHaveBeenCalledWith(jasmine.any(MouseEvent));
392392
});
393393

394394
it('should complete the backdrop click stream once the overlay is destroyed', () => {

src/lib/dialog/dialog-ref.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export class MatDialogRef<T, R = any> {
141141
/**
142142
* Gets an observable that emits when the overlay's backdrop has been clicked.
143143
*/
144-
backdropClick(): Observable<void> {
144+
backdropClick(): Observable<MouseEvent> {
145145
return this._overlayRef.backdropClick();
146146
}
147147

0 commit comments

Comments
 (0)