Skip to content

Commit 843b703

Browse files
authored
fix(module:cascader,select,time-picker,tooltip,tree-select): take in account shadow dom when getting the target of an event (#7853)
use _getEventTarget provided by @angular/cdk/platform to make sure that the chain of target is not cut by the shadow dom
1 parent 69cd6da commit 843b703

File tree

5 files changed

+15
-7
lines changed

5 files changed

+15
-7
lines changed

components/cascader/cascader.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { Direction, Directionality } from '@angular/cdk/bidi';
77
import { BACKSPACE, DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';
88
import { CdkConnectedOverlay, ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
9+
import { _getEventTarget } from '@angular/cdk/platform';
910
import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';
1011
import {
1112
ChangeDetectionStrategy,
@@ -671,7 +672,8 @@ export class NzCascaderComponent
671672
}
672673

673674
onClickOutside(event: MouseEvent): void {
674-
if (!this.el.contains(event.target as Node)) {
675+
const target = _getEventTarget(event);
676+
if (!this.el.contains(target as Node)) {
675677
this.closeMenu();
676678
}
677679
}

components/select/select.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
ConnectedOverlayPositionChange,
1313
ConnectionPositionPair
1414
} from '@angular/cdk/overlay';
15-
import { Platform } from '@angular/cdk/platform';
15+
import { _getEventTarget, Platform } from '@angular/cdk/platform';
1616
import { NgIf, NgStyle } from '@angular/common';
1717
import {
1818
AfterContentInit,
@@ -547,7 +547,8 @@ export class NzSelectComponent implements ControlValueAccessor, OnInit, AfterCon
547547
}
548548

549549
onClickOutside(event: MouseEvent): void {
550-
if (!this.host.nativeElement.contains(event.target as HTMLElement)) {
550+
const target = _getEventTarget(event);
551+
if (!this.host.nativeElement.contains(target as Node)) {
551552
this.setOpenState(false);
552553
}
553554
}

components/time-picker/time-picker.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Direction, Directionality } from '@angular/cdk/bidi';
77
import { CdkOverlayOrigin, ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
8-
import { Platform } from '@angular/cdk/platform';
8+
import { _getEventTarget, Platform } from '@angular/cdk/platform';
99
import { AsyncPipe, NgClass, NgIf } from '@angular/common';
1010
import {
1111
AfterViewInit,
@@ -298,7 +298,8 @@ export class NzTimePickerComponent implements ControlValueAccessor, OnInit, Afte
298298
}
299299

300300
onClickOutside(event: MouseEvent): void {
301-
if (!this.element.nativeElement.contains(event.target)) {
301+
const target = _getEventTarget(event);
302+
if (!this.element.nativeElement.contains(target)) {
302303
this.setCurrentValueAndClose();
303304
}
304305
}

components/tooltip/base.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import { Direction, Directionality } from '@angular/cdk/bidi';
77
import { CdkConnectedOverlay, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';
8+
import { _getEventTarget } from '@angular/cdk/platform';
89
import { isPlatformBrowser } from '@angular/common';
910
import {
1011
AfterViewInit,
@@ -472,7 +473,8 @@ export abstract class NzTooltipBaseComponent implements OnDestroy, OnInit {
472473
}
473474

474475
onClickOutside(event: MouseEvent): void {
475-
if (!this.origin.nativeElement.contains(event.target) && this.nzTrigger !== null) {
476+
const target = _getEventTarget(event);
477+
if (!this.origin.nativeElement.contains(target) && this.nzTrigger !== null) {
476478
this.hide();
477479
}
478480
}

components/tree-select/tree-select.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
ConnectedOverlayPositionChange,
1313
ConnectionPositionPair
1414
} from '@angular/cdk/overlay';
15+
import { _getEventTarget } from '@angular/cdk/platform';
1516
import { NgClass, NgFor, NgIf, NgStyle, SlicePipe } from '@angular/common';
1617
import {
1718
ChangeDetectorRef,
@@ -699,7 +700,8 @@ export class NzTreeSelectComponent extends NzTreeBase implements ControlValueAcc
699700
}
700701

701702
onClickOutside(event: MouseEvent): void {
702-
if (!this.elementRef.nativeElement.contains(event.target)) {
703+
const target = _getEventTarget(event);
704+
if (!this.elementRef.nativeElement.contains(target)) {
703705
this.closeDropDown();
704706
}
705707
}

0 commit comments

Comments
 (0)