Skip to content

Commit ab527f0

Browse files
authored
Merge pull request #8299 from IgniteUI/mvenkov/handle_correctly_target_as_point-10.1
Handle correctly target as point
2 parents 40a2972 + bf54dd3 commit ab527f0

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

projects/igniteui-angular/src/lib/services/overlay/overlay.spec.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,35 @@ describe('igxOverlay', () => {
887887
expect(element.style.width).toBe('200px');
888888
expect(element.style.height).toBe('100px');
889889
});
890+
891+
it('should close overlay on outside click when target is point, #8297', fakeAsync(() => {
892+
const fix = TestBed.createComponent(EmptyPageComponent);
893+
const button = fix.componentInstance.buttonElement;
894+
const overlay = fix.componentInstance.overlay;
895+
fix.detectChanges();
896+
897+
const overlaySettings: OverlaySettings = {
898+
modal: false,
899+
closeOnOutsideClick: true,
900+
positionStrategy: new ConnectedPositioningStrategy()
901+
};
902+
903+
overlaySettings.positionStrategy.settings.target = new Point(10, 10);
904+
905+
overlay.show(overlay.attach(SimpleDynamicComponent), overlaySettings);
906+
tick();
907+
fix.detectChanges();
908+
909+
let overlayDiv: Element = document.getElementsByClassName(CLASS_OVERLAY_MAIN)[0];
910+
expect(overlayDiv).toBeDefined();
911+
912+
document.body.click();
913+
tick();
914+
fix.detectChanges();
915+
916+
overlayDiv = document.getElementsByClassName(CLASS_OVERLAY_MAIN)[0];
917+
expect(overlayDiv).toBeUndefined();
918+
}));
890919
});
891920

892921
describe('Unit Tests - Scroll Strategies: ', () => {

projects/igniteui-angular/src/lib/services/overlay/overlay.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ export class IgxOverlayService implements OnDestroy {
653653
// if we should exclude position target check if the click is over it. If so do not close overlay
654654
const positionTarget = info.settings.positionStrategy.settings.target as HTMLElement;
655655
let clickOnPositionTarget = false;
656-
if (positionTarget) {
656+
if (positionTarget && positionTarget.contains) {
657657
clickOnPositionTarget = positionTarget.contains(target);
658658
}
659659

0 commit comments

Comments
 (0)