Skip to content

Commit adecf62

Browse files
committed
[added] Class name on body when modal is open
1 parent 0e94233 commit adecf62

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

lib/components/Modal.js

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var ExecutionEnvironment = require('react/lib/ExecutionEnvironment');
33
var ModalPortal = React.createFactory(require('./ModalPortal'));
44
var ariaAppHider = require('../helpers/ariaAppHider');
55
var injectCSS = require('../helpers/injectCSS');
6+
var elementClass = require('element-class');
67

78
var SafeHTMLElement = ExecutionEnvironment.canUseDOM ? window.HTMLElement : {};
89

@@ -48,6 +49,12 @@ var Modal = module.exports = React.createClass({
4849
},
4950

5051
renderPortal: function(props) {
52+
if (props.isOpen) {
53+
elementClass(document.body).add('ReactModal__Body--open');
54+
} else {
55+
elementClass(document.body).remove('ReactModal__Body--open');
56+
}
57+
5158
if (props.ariaHideApp) {
5259
ariaAppHider.toggle(props.isOpen, props.appElement);
5360
}

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
"webpack-dev-server": "1.10.1"
4141
},
4242
"dependencies": {
43-
"classnames": "^2.1.3"
43+
"classnames": "^2.1.3",
44+
"element-class": "^0.2.0"
4445
},
4546
"peerDependencies": {
4647
"react": ">=0.13.3"

specs/Modal.spec.js

+12
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,18 @@ describe('Modal', function () {
115115
equal(modal.portal.refs.content.getDOMNode().style.width, '20px');
116116
});
117117

118+
it('adds class to body when open', function() {
119+
var modal = renderModal({isOpen: false});
120+
equal(document.body.className.contains('ReactModal__Body--open'), false);
121+
122+
modal.setProps({ isOpen: true});
123+
equal(document.body.className.contains('ReactModal__Body--open'), true);
124+
125+
modal = renderModal({isOpen: false});
126+
equal(document.body.className.contains('ReactModal__Body--open'), false);
127+
unmountModal();
128+
});
129+
118130
it('adds --after-open for animations', function() {
119131
var modal = renderModal({isOpen: true});
120132
var overlay = document.querySelector('.ReactModal__Overlay');

0 commit comments

Comments
 (0)