From 611a18f01b47f384dd8c95d472a3acf9d1174f92 Mon Sep 17 00:00:00 2001 From: Constance Date: Fri, 3 Dec 2021 09:46:57 -0800 Subject: [PATCH] [EuiPopover] Fix removeEventListener with mismatched capture flag (#5437) * Fix removeEventListener with mismatched capture flag Per MDN: 'Removal of a capturing listener does not affect a non-capturing version of the same listener, and vice versa.' * Add changelog entry --- CHANGELOG.md | 1 + src/components/popover/popover.tsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9d41e15c3c..1b8c34e46c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Fixed scrollbars in `EuiRange` tick labels in Safari ([#5427](https://github.com/elastic/eui/pull/5427)) - Fixed an `EuiOverlayMask` bug where it calls window.document on server side([#5422](https://github.com/elastic/eui/pull/5422)) +- Fixed unremoved event listener memory leak in `EuiPopover` ([#5436](https://github.com/elastic/eui/pull/5436)) ## [`42.0.0`](https://github.com/elastic/eui/tree/v42.0.0) diff --git a/src/components/popover/popover.tsx b/src/components/popover/popover.tsx index 4daf77f6d70..6433a081cf7 100644 --- a/src/components/popover/popover.tsx +++ b/src/components/popover/popover.tsx @@ -546,7 +546,7 @@ export class EuiPopover extends Component { } componentWillUnmount() { - window.removeEventListener('scroll', this.positionPopoverFixed); + window.removeEventListener('scroll', this.positionPopoverFixed, true); clearTimeout(this.respositionTimeout); clearTimeout(this.closingTransitionTimeout); cancelAnimationFrame(this.closingTransitionAnimationFrame!);