From f47e79db83ef6e855195447640005e1b796aaec4 Mon Sep 17 00:00:00 2001 From: Sean Nichols Date: Thu, 29 Jun 2017 09:57:35 -0400 Subject: [PATCH] [fixed] Modal.removePortal not called when using closeTimeoutMS --- specs/Modal.spec.js | 21 +++++++++++++++++++++ src/components/Modal.js | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/specs/Modal.spec.js b/specs/Modal.spec.js index 9a407851..baa94397 100644 --- a/specs/Modal.spec.js +++ b/specs/Modal.spec.js @@ -100,6 +100,27 @@ describe('State', () => { expect(document.querySelector('.ReactModalPortal')).toNotExist(); }); + it('removes the portal node after closeTimeoutMS', done => { + const closeTimeoutMS = 100; + renderModal({ isOpen: true, closeTimeoutMS }, 'hello'); + + function checkDOM(count) { + const portal = document.querySelectorAll('.ReactModalPortal'); + expect(portal.length).toBe(count); + } + + unmountModal(); + + // content is still mounted after modal is gone + checkDOM(1); + + setTimeout(() => { + // content is unmounted after specified timeout + checkDOM(0); + done(); + }, closeTimeoutMS); + }); + it('focuses the modal content', () => { const modal = renderModal({ isOpen: true }, null); expect(document.activeElement).toBe(mcontent(modal)); diff --git a/src/components/Modal.js b/src/components/Modal.js index db3077d1..275c164f 100644 --- a/src/components/Modal.js +++ b/src/components/Modal.js @@ -140,7 +140,7 @@ export default class Modal extends Component { this.portal.closeWithTimeout(); } - setTimeout(() => this.removePortal, closesAt - now); + setTimeout(this.removePortal, closesAt - now); } else { this.removePortal(); }