Skip to content

Commit f47e79d

Browse files
Sean Nicholsdiasbruno
Sean Nichols
authored andcommitted
[fixed] Modal.removePortal not called when using closeTimeoutMS
1 parent f386aa4 commit f47e79d

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

specs/Modal.spec.js

+21
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,27 @@ describe('State', () => {
100100
expect(document.querySelector('.ReactModalPortal')).toNotExist();
101101
});
102102

103+
it('removes the portal node after closeTimeoutMS', done => {
104+
const closeTimeoutMS = 100;
105+
renderModal({ isOpen: true, closeTimeoutMS }, 'hello');
106+
107+
function checkDOM(count) {
108+
const portal = document.querySelectorAll('.ReactModalPortal');
109+
expect(portal.length).toBe(count);
110+
}
111+
112+
unmountModal();
113+
114+
// content is still mounted after modal is gone
115+
checkDOM(1);
116+
117+
setTimeout(() => {
118+
// content is unmounted after specified timeout
119+
checkDOM(0);
120+
done();
121+
}, closeTimeoutMS);
122+
});
123+
103124
it('focuses the modal content', () => {
104125
const modal = renderModal({ isOpen: true }, null);
105126
expect(document.activeElement).toBe(mcontent(modal));

src/components/Modal.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export default class Modal extends Component {
140140
this.portal.closeWithTimeout();
141141
}
142142

143-
setTimeout(() => this.removePortal, closesAt - now);
143+
setTimeout(this.removePortal, closesAt - now);
144144
} else {
145145
this.removePortal();
146146
}

0 commit comments

Comments
 (0)