diff --git a/packages/menus/src/containers/MenuContainer.js b/packages/menus/src/containers/MenuContainer.js index 289df2b749b..07f5578de5a 100644 --- a/packages/menus/src/containers/MenuContainer.js +++ b/packages/menus/src/containers/MenuContainer.js @@ -159,7 +159,7 @@ class MenuContainer extends ControlledComponent { componentWillUnmount() { const doc = getDocument ? getDocument(this.props) : document; - doc.addEventListener('mousedown', this.handleOutsideMouseDown); + doc.removeEventListener('mousedown', this.handleOutsideMouseDown); } componentDidUpdate(prevProps, prevState) { diff --git a/packages/menus/src/containers/MenuContainer.spec.js b/packages/menus/src/containers/MenuContainer.spec.js index a2807e87681..65580a37220 100644 --- a/packages/menus/src/containers/MenuContainer.spec.js +++ b/packages/menus/src/containers/MenuContainer.spec.js @@ -254,6 +254,20 @@ describe('MenuContainer', () => { }); }); + describe('componentWillUnmount', () => { + it('removes mousedown event listener', () => { + const removeEventListenerSpy = jest.fn(); + + document.removeEventListener = removeEventListenerSpy; + wrapper = mountWithTheme(basicExample({ onChange: onChangeSpy }), { + enzymeOptions: { attachTo: document.body } + }); + wrapper.unmount(); + + expect(removeEventListenerSpy).toHaveBeenCalled(); + }); + }); + describe('getTriggerProps()', () => { beforeEach(() => { wrapper = mountWithTheme(basicExample({ onChange: onChangeSpy }));