diff --git a/ui-ngx/src/app/shared/components/popover.component.ts b/ui-ngx/src/app/shared/components/popover.component.ts index 03d71a84ad..ad2e90cc15 100644 --- a/ui-ngx/src/app/shared/components/popover.component.ts +++ b/ui-ngx/src/app/shared/components/popover.component.ts @@ -558,7 +558,9 @@ export class TbPopoverComponent implements OnDestroy, OnInit { onClickOutside(event: MouseEvent): void { if (this.tbHideOnClickOutside && !this.origin.elementRef.nativeElement.contains(event.target) && this.tbTrigger !== null) { - this.hide(); + if (!this.isTopOverlay(event.target as Element)) { + this.hide(); + } } } @@ -571,6 +573,21 @@ export class TbPopoverComponent implements OnDestroy, OnInit { this.tbAnimationDone.next(); } + private isTopOverlay(targetElement: Element): boolean { + const target = $(targetElement); + if (target.parents('.cdk-overlay-container').length) { + let targetOverlayContainerChild: JQuery; + if (target.hasClass('cdk-overlay-backdrop')) { + targetOverlayContainerChild = target; + } else { + targetOverlayContainerChild = target.parents('.cdk-overlay-pane').parent(); + } + const currentOverlayContainerChild = $(this.overlay.overlayRef.overlayElement).parent(); + return targetOverlayContainerChild.index() > currentOverlayContainerChild.index(); + } + return false; + } + private updateVisibilityByContent(): void { if (this.isEmpty()) { this.hide();