Skip to content

Commit 8440694

Browse files
fix: close popup on destroy (#822)
1 parent 65fc293 commit 8440694

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

projects/components/src/popover/popover.component.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
OnDestroy,
1010
Output
1111
} from '@angular/core';
12-
import { Subscription } from 'rxjs';
1312
import { PopoverBackdrop, PopoverPositionType, PopoverRelativePositionLocation } from './popover';
1413
import { PopoverContentComponent } from './popover-content.component';
1514
import { PopoverRef } from './popover-ref';
@@ -51,12 +50,14 @@ export class PopoverComponent implements OnDestroy {
5150
@ContentChild(PopoverContentComponent, { static: true })
5251
public content!: PopoverContentComponent;
5352

54-
private subscription?: Subscription;
53+
private popover?: PopoverRef;
5554

5655
public constructor(private readonly popoverService: PopoverService, private readonly popoverElement: ElementRef) {}
5756

5857
public ngOnDestroy(): void {
59-
this.subscription?.unsubscribe();
58+
if (!this.popover?.closed) {
59+
this.popover?.close();
60+
}
6061
}
6162

6263
@HostListener('click')
@@ -65,7 +66,7 @@ export class PopoverComponent implements OnDestroy {
6566
return;
6667
}
6768

68-
const popover = this.popoverService.drawPopover({
69+
this.popover = this.popoverService.drawPopover({
6970
position: {
7071
type: PopoverPositionType.Relative,
7172
origin: this.popoverElement,
@@ -76,17 +77,17 @@ export class PopoverComponent implements OnDestroy {
7677
});
7778

7879
// Closing can happen internal to the Popover for things like closeOnBackdropClick. Let the consumer know.
79-
this.subscription = popover.closed$.subscribe(() => this.popoverClose.emit());
80+
this.popover.closed$.subscribe(() => this.popoverClose.emit());
8081

81-
popover.closeOnBackdropClick();
82+
this.popover.closeOnBackdropClick();
8283

8384
if (this.closeOnClick) {
84-
popover.closeOnPopoverContentClick();
85+
this.popover.closeOnPopoverContentClick();
8586
}
8687
if (this.closeOnNavigate) {
87-
popover.closeOnNavigation();
88+
this.popover.closeOnNavigation();
8889
}
8990

90-
this.popoverOpen.emit(popover);
91+
this.popoverOpen.emit(this.popover);
9192
}
9293
}

0 commit comments

Comments
 (0)