File tree 3 files changed +21
-1
lines changed
3 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ var ExecutionEnvironment = require('react/lib/ExecutionEnvironment');
3
3
var ModalPortal = React . createFactory ( require ( './ModalPortal' ) ) ;
4
4
var ariaAppHider = require ( '../helpers/ariaAppHider' ) ;
5
5
var injectCSS = require ( '../helpers/injectCSS' ) ;
6
+ var elementClass = require ( 'element-class' ) ;
6
7
7
8
var SafeHTMLElement = ExecutionEnvironment . canUseDOM ? window . HTMLElement : { } ;
8
9
@@ -48,6 +49,12 @@ var Modal = module.exports = React.createClass({
48
49
} ,
49
50
50
51
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
+
51
58
if ( props . ariaHideApp ) {
52
59
ariaAppHider . toggle ( props . isOpen , props . appElement ) ;
53
60
}
Original file line number Diff line number Diff line change 40
40
"webpack-dev-server" : " 1.10.1"
41
41
},
42
42
"dependencies" : {
43
- "classnames" : " ^2.1.3"
43
+ "classnames" : " ^2.1.3" ,
44
+ "element-class" : " ^0.2.0"
44
45
},
45
46
"peerDependencies" : {
46
47
"react" : " >=0.13.3"
Original file line number Diff line number Diff line change @@ -115,6 +115,18 @@ describe('Modal', function () {
115
115
equal ( modal . portal . refs . content . getDOMNode ( ) . style . width , '20px' ) ;
116
116
} ) ;
117
117
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
+
118
130
it ( 'adds --after-open for animations' , function ( ) {
119
131
var modal = renderModal ( { isOpen : true } ) ;
120
132
var overlay = document . querySelector ( '.ReactModal__Overlay' ) ;
You can’t perform that action at this time.
0 commit comments