Skip to content

Commit 6922f04

Browse files
fix: fixes #18190, replace outside click listeners w/ mousedown
1 parent 8771866 commit 6922f04

File tree

11 files changed

+250
-266
lines changed

11 files changed

+250
-266
lines changed

packages/primeng/src/confirmpopup/confirmpopup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ export class ConfirmPopup extends BaseComponent implements AfterContentInit, OnD
410410

411411
bindDocumentClickListener() {
412412
if (!this.documentClickListener) {
413-
let documentEvent = isIOS() ? 'touchstart' : 'click';
413+
let documentEvent = isIOS() ? 'touchstart' : 'mousedown';
414414
const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : this.document;
415415

416416
this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {

packages/primeng/src/contextmenu/contextmenu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ export class ContextMenu extends BaseComponent implements OnInit, AfterContentIn
625625
if (!this.documentClickListener) {
626626
const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';
627627

628-
this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
628+
this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {
629629
if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2 && this.triggerEvent !== 'click') {
630630
this.hide();
631631
}

packages/primeng/src/megamenu/megamenu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1241,7 +1241,7 @@ export class MegaMenu extends BaseComponent implements AfterContentInit, OnDestr
12411241
bindOutsideClickListener() {
12421242
if (isPlatformBrowser(this.platformId)) {
12431243
if (!this.outsideClickListener) {
1244-
this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1244+
this.outsideClickListener = this.renderer.listen(this.document, 'mousedown', (event) => {
12451245
const isOutsideContainer = this.container?.nativeElement !== event.target && !this.container?.nativeElement.contains(event.target);
12461246

12471247
if (isOutsideContainer) {

packages/primeng/src/menu/menu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ export class Menu extends BaseComponent implements AfterContentInit, OnDestroy {
753753
if (!this.documentClickListener && isPlatformBrowser(this.platformId)) {
754754
const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';
755755

756-
this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
756+
this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {
757757
const isOutsideContainer = this.containerViewChild?.nativeElement && !this.containerViewChild?.nativeElement.contains(event.target);
758758
const isOutsideTarget = !(this.target && (this.target === event.target || this.target.contains(event.target)));
759759
if (!this.popup && isOutsideContainer && isOutsideTarget) {

packages/primeng/src/menubar/menubar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1163,7 +1163,7 @@ export class Menubar extends BaseComponent implements AfterContentInit, OnDestro
11631163
bindOutsideClickListener() {
11641164
if (isPlatformBrowser(this.platformId)) {
11651165
if (!this.outsideClickListener) {
1166-
this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1166+
this.outsideClickListener = this.renderer.listen(this.document, 'mousedown', (event) => {
11671167
const isOutsideContainer = this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target);
11681168
const isOutsideMenuButton = this.mobileActive && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target);
11691169

packages/primeng/src/overlay/overlay.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ export class Overlay extends BaseComponent implements AfterContentInit, OnDestro
558558

559559
bindDocumentClickListener() {
560560
if (!this.documentClickListener) {
561-
this.documentClickListener = this.renderer.listen(this.document, 'click', (event) => {
561+
this.documentClickListener = this.renderer.listen(this.document, 'mousedown', (event) => {
562562
const isTargetClicked = this.targetEl && ((this.targetEl as any).isSameNode(event.target) || (!this.isOverlayClicked && (this.targetEl as any).contains(event.target)));
563563
const isOutsideClicked = !isTargetClicked && !this.isOverlayContentClicked;
564564
const valid = this.listener ? this.listener(event, { type: 'outside', mode: this.overlayMode, valid: event.which !== 3 && isOutsideClicked }) : isOutsideClicked;

packages/primeng/src/overlaypanel/overlaypanel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ export class OverlayPanel extends BaseComponent implements AfterContentInit, OnD
236236
bindDocumentClickListener() {
237237
if (isPlatformBrowser(this.platformId)) {
238238
if (!this.documentClickListener) {
239-
let documentEvent = isIOS() ? 'touchstart' : 'click';
239+
let documentEvent = isIOS() ? 'touchstart' : 'mousedown';
240240
const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : this.document;
241241

242242
this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {

packages/primeng/src/popover/popover.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ export class Popover extends BaseComponent implements AfterContentInit, OnDestro
221221
bindDocumentClickListener() {
222222
if (isPlatformBrowser(this.platformId)) {
223223
if (!this.documentClickListener) {
224-
let documentEvent = isIOS() ? 'touchstart' : 'click';
224+
let documentEvent = isIOS() ? 'touchstart' : 'mousedown';
225225
const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : this.document;
226226

227227
this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {

packages/primeng/src/speeddial/speeddial.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ export class SpeedDial extends BaseComponent implements AfterViewInit, AfterCont
730730
bindDocumentClickListener() {
731731
if (isPlatformBrowser(this.platformId)) {
732732
if (!this.documentClickListener && this.hideOnClickOutside) {
733-
this.documentClickListener = this.renderer.listen(this.document, 'click', (event) => {
733+
this.documentClickListener = this.renderer.listen(this.document, 'mousedown', (event) => {
734734
if (this.visible && this.isOutsideClicked(event)) {
735735
this.hide();
736736
}

packages/primeng/src/tieredmenu/tieredmenu.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ export class TieredMenu extends BaseComponent implements OnInit, OnDestroy {
11851185
bindOutsideClickListener() {
11861186
if (isPlatformBrowser(this.platformId)) {
11871187
if (!this.outsideClickListener) {
1188-
this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1188+
this.outsideClickListener = this.renderer.listen(this.document, 'mousedown', (event) => {
11891189
const isOutsideContainer = this.containerViewChild && !this.containerViewChild.nativeElement.contains(event.target);
11901190
const isOutsideTarget = this.popup ? !(this.target && (this.target === event.target || this.target.contains(event.target))) : true;
11911191
if (isOutsideContainer && isOutsideTarget) {
@@ -1198,7 +1198,7 @@ export class TieredMenu extends BaseComponent implements OnInit, OnDestroy {
11981198

11991199
unbindOutsideClickListener() {
12001200
if (this.outsideClickListener) {
1201-
document.removeEventListener('click', this.outsideClickListener);
1201+
document.removeEventListener('mousedown', this.outsideClickListener);
12021202
this.outsideClickListener = null;
12031203
}
12041204
}

0 commit comments

Comments
 (0)