Skip to content

Commit c107d02

Browse files
committed
Merge pull request #81 from roth1002/feature/react-14
Feature/react 14
2 parents 920d421 + 7e12d8a commit c107d02

File tree

8 files changed

+49
-43
lines changed

8 files changed

+49
-43
lines changed

Diff for: README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ Inside an app:
5454

5555
```js
5656
var React = require('react');
57+
var ReactDOM = require('react-dom');
5758
var Modal = require('react-modal');
5859

5960
var appElement = document.getElementById('your-app-element');
@@ -120,7 +121,7 @@ var App = React.createClass({
120121
}
121122
});
122123

123-
React.render(<App/>, appElement);
124+
ReactDOM.render(<App/>, appElement);
124125
```
125126

126127
# Demos

Diff for: examples/basic/app.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var React = require('react');
2+
var ReactDOM = require('react-dom');
23
var Modal = require('../../lib/index');
34

45
var appElement = document.getElementById('example');
@@ -58,4 +59,4 @@ var App = React.createClass({
5859
}
5960
});
6061

61-
React.render(<App/>, appElement);
62+
ReactDOM.render(<App/>, appElement);

Diff for: examples/bootstrap/app.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var React = require('react');
2+
var ReactDOM = require('react-dom');
23
var Modal = require('../../lib/index');
34

45
var appElement = document.getElementById('example');
@@ -64,4 +65,4 @@ var App = React.createClass({
6465
}
6566
});
6667

67-
React.render(<App/>, appElement);
68+
ReactDOM.render(<App/>, appElement);

Diff for: lib/components/Modal.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var React = require('react');
2-
var ExecutionEnvironment = require('react/lib/ExecutionEnvironment');
2+
var ReactDOM = require('react-dom');
3+
var ExecutionEnvironment = require('exenv');
34
var ModalPortal = React.createFactory(require('./ModalPortal'));
45
var ariaAppHider = require('../helpers/ariaAppHider');
56
var elementClass = require('element-class');
@@ -50,7 +51,7 @@ var Modal = module.exports = React.createClass({
5051
},
5152

5253
componentWillUnmount: function() {
53-
React.unmountComponentAtNode(this.node);
54+
ReactDOM.unmountComponentAtNode(this.node);
5455
document.body.removeChild(this.node);
5556
},
5657

@@ -65,10 +66,7 @@ var Modal = module.exports = React.createClass({
6566
ariaAppHider.toggle(props.isOpen, props.appElement);
6667
}
6768
sanitizeProps(props);
68-
if (this.portal)
69-
this.portal.setProps(props);
70-
else
71-
this.portal = React.render(ModalPortal(props), this.node);
69+
this.portal = ReactDOM.render(ModalPortal(props), this.node);
7270
},
7371

7472
render: function () {

Diff for: lib/components/ModalPortal.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ var ModalPortal = module.exports = React.createClass({
103103
},
104104

105105
open: function() {
106-
focusManager.setupScopedFocus(this.getDOMNode());
106+
focusManager.setupScopedFocus(this.node);
107107
focusManager.markForFocusLater();
108108
this.setState({isOpen: true}, function() {
109109
this.setState({afterOpen: true});
@@ -120,7 +120,7 @@ var ModalPortal = module.exports = React.createClass({
120120
},
121121

122122
focusContent: function() {
123-
this.refs.content.getDOMNode().focus();
123+
this.refs.content.focus();
124124
},
125125

126126
closeWithTimeout: function() {
@@ -142,7 +142,7 @@ var ModalPortal = module.exports = React.createClass({
142142
},
143143

144144
handleKeyDown: function(event) {
145-
if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content.getDOMNode(), event);
145+
if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content, event);
146146
if (event.keyCode == 27 /*esc*/) this.requestClose();
147147
},
148148

Diff for: package.json

+5-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@
3434
"karma-mocha": "0.2.0",
3535
"karma-safari-launcher": "^0.1.1",
3636
"mocha": "2.3.3",
37-
"react": ">=0.13.3",
37+
"exenv": "1.2.0",
38+
"react-addons-test-utils": "^0.14.0",
39+
"react-dom": "^0.14.0",
40+
"react": "^0.14.0",
3841
"reactify": "^1.1.1",
3942
"rf-release": "0.4.0",
4043
"uglify-js": "2.4.24",
@@ -45,7 +48,7 @@
4548
"lodash.assign": "^3.2.0"
4649
},
4750
"peerDependencies": {
48-
"react": ">=0.13.3 || ^0.14.0-beta3"
51+
"react": "^0.14.0"
4952
},
5053
"tags": [
5154
"react",

Diff for: specs/Modal.spec.js

+27-25
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
require('./helper');
2-
var React = require('react/addons');
2+
var TestUtils = require('react-addons-test-utils');
3+
var React = require('react');
4+
var ReactDOM = require('react-dom');
35
var Modal = require('../lib/components/Modal');
4-
var Simulate = React.addons.TestUtils.Simulate;
6+
var Simulate = TestUtils.Simulate;
57
var ariaAppHider = require('../lib/helpers/ariaAppHider');
6-
var button = React.DOM.button;
8+
var button = ReactDOM.button;
79

810
describe('Modal', function () {
911

@@ -13,35 +15,35 @@ describe('Modal', function () {
1315

1416
it('can be open initially', function() {
1517
var component = renderModal({isOpen: true}, 'hello');
16-
equal(component.portal.refs.content.getDOMNode().innerHTML.trim(), 'hello');
18+
equal(component.portal.refs.content.innerHTML.trim(), 'hello');
1719
unmountModal();
1820
});
1921

2022
it('can be closed initially', function() {
2123
var component = renderModal({}, 'hello');
22-
equal(component.portal.getDOMNode().innerHTML.trim(), '');
24+
equal(ReactDOM.findDOMNode(component.portal).innerHTML.trim(), '');
2325
unmountModal();
2426
});
2527

2628
it('uses the global appElement', function() {
2729
var app = document.createElement('div');
2830
var node = document.createElement('div');
2931
Modal.setAppElement(app);
30-
React.render(React.createElement(Modal, {isOpen: true}), node);
32+
ReactDOM.render(React.createElement(Modal, {isOpen: true}), node);
3133
equal(app.getAttribute('aria-hidden'), 'true');
3234
ariaAppHider.resetForTesting();
33-
React.unmountComponentAtNode(node);
35+
ReactDOM.unmountComponentAtNode(node);
3436
});
3537

3638
it('accepts appElement as a prop', function() {
3739
var el = document.createElement('div');
3840
var node = document.createElement('div');
39-
React.render(React.createElement(Modal, {
41+
ReactDOM.render(React.createElement(Modal, {
4042
isOpen: true,
4143
appElement: el
4244
}), node);
4345
equal(el.getAttribute('aria-hidden'), 'true');
44-
React.unmountComponentAtNode(node);
46+
ReactDOM.unmountComponentAtNode(node);
4547
});
4648

4749
it('renders into the body, not in context', function() {
@@ -51,82 +53,82 @@ describe('Modal', function () {
5153
return React.DOM.div({}, React.createElement(Modal, {isOpen: true, ariaHideApp: false}, 'hello'));
5254
}
5355
});
54-
React.render(React.createElement(App), node);
56+
ReactDOM.render(React.createElement(App), node);
5557
var modalParent = document.body.querySelector('.ReactModalPortal').parentNode;
5658
equal(modalParent, document.body);
57-
React.unmountComponentAtNode(node);
59+
ReactDOM.unmountComponentAtNode(node);
5860
});
5961

6062
it('renders children', function() {
6163
var child = 'I am a child of Modal, and he has sent me here...';
6264
var component = renderModal({isOpen: true}, child);
63-
equal(component.portal.refs.content.getDOMNode().innerHTML, child);
65+
equal(component.portal.refs.content.innerHTML, child);
6466
unmountModal();
6567
});
6668

6769
it('has default props', function() {
6870
var node = document.createElement('div');
6971
Modal.setAppElement(document.createElement('div'));
70-
var component = React.render(React.createElement(Modal), node);
72+
var component = ReactDOM.render(React.createElement(Modal), node);
7173
var props = component.props;
7274
equal(props.isOpen, false);
7375
equal(props.ariaHideApp, true);
7476
equal(props.closeTimeoutMS, 0);
75-
React.unmountComponentAtNode(node);
77+
ReactDOM.unmountComponentAtNode(node);
7678
ariaAppHider.resetForTesting();
7779
});
7880

7981
it('removes the portal node', function() {
8082
var component = renderModal({isOpen: true}, 'hello');
81-
equal(component.portal.refs.content.getDOMNode().innerHTML.trim(), 'hello');
83+
equal(component.portal.refs.content.innerHTML.trim(), 'hello');
8284
unmountModal();
8385
ok(!document.querySelector('.ReactModalPortal'));
8486
});
8587

8688
it('focuses the modal content', function() {
8789
renderModal({isOpen: true}, null, function () {
88-
strictEqual(document.activeElement, this.portal.refs.content.getDOMNode());
90+
strictEqual(document.activeElement, this.portal.refs.content);
8991
unmountModal();
9092
});
9193
});
9294

9395
it('supports custom className', function() {
9496
var modal = renderModal({isOpen: true, className: 'myClass'});
95-
equal(modal.portal.refs.content.getDOMNode().className.indexOf('myClass') !== -1, true);
97+
equal(modal.portal.refs.content.className.contains('myClass'), true);
9698
unmountModal();
9799
});
98100

99101
it('supports overlayClassName', function () {
100102
var modal = renderModal({isOpen: true, overlayClassName: 'myOverlayClass'});
101-
equal(modal.portal.refs.overlay.getDOMNode().className.indexOf('myOverlayClass') !== -1, true);
103+
equal(modal.portal.refs.overlay.className.contains('myOverlayClass'), true);
102104
unmountModal();
103105
});
104106

105107
it('supports adding style to the modal contents', function () {
106108
var modal = renderModal({isOpen: true, style: {content: {width: '20px'}}});
107-
equal(modal.portal.refs.content.getDOMNode().style.width, '20px');
109+
equal(modal.portal.refs.content.style.width, '20px');
108110
});
109111

110112
it('supports overridding style on the modal contents', function() {
111113
var modal = renderModal({isOpen: true, style: {content: {position: 'static'}}});
112-
equal(modal.portal.refs.content.getDOMNode().style.position, 'static');
114+
equal(modal.portal.refs.content.style.position, 'static');
113115
});
114116

115117
it('supports adding style on the modal overlay', function() {
116118
var modal = renderModal({isOpen: true, style: {overlay: {width: '75px'}}});
117-
equal(modal.portal.refs.overlay.getDOMNode().style.width, '75px');
119+
equal(modal.portal.refs.overlay.style.width, '75px');
118120
});
119121

120122
it('supports overridding style on the modal overlay', function() {
121123
var modal = renderModal({isOpen: true, style: {overlay: {position: 'static'}}});
122-
equal(modal.portal.refs.overlay.getDOMNode().style.position, 'static');
124+
equal(modal.portal.refs.overlay.style.position, 'static');
123125
});
124126

125127
it('adds class to body when open', function() {
126128
var modal = renderModal({isOpen: false});
127129
equal(document.body.className.indexOf('ReactModal__Body--open') !== -1, false);
128130

129-
modal.setProps({ isOpen: true});
131+
modal = renderModal({isOpen: true});
130132
equal(document.body.className.indexOf('ReactModal__Body--open') !== -1, true);
131133

132134
modal = renderModal({isOpen: false});
@@ -146,13 +148,13 @@ describe('Modal', function () {
146148
//it('adds --before-close for animations', function() {
147149
//var node = document.createElement('div');
148150

149-
//var component = React.render(React.createElement(Modal, {
151+
//var component = ReactDOM.render(React.createElement(Modal, {
150152
//isOpen: true,
151153
//ariaHideApp: false,
152154
//closeTimeoutMS: 50,
153155
//}), node);
154156

155-
//component = React.render(React.createElement(Modal, {
157+
//component = ReactDOM.render(React.createElement(Modal, {
156158
//isOpen: false,
157159
//ariaHideApp: false,
158160
//closeTimeoutMS: 50,

Diff for: specs/helper.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
assert = require('assert');
2-
React = require('react/addons');
2+
var React = require('react');
3+
var ReactDOM = require('react-dom');
34
var Modal = React.createFactory(require('../lib/components/Modal'));
45

5-
ReactTestUtils = React.addons.TestUtils;
66
ok = assert.ok;
77
equal = assert.equal;
88
strictEqual = assert.strictEqual;
@@ -14,11 +14,11 @@ renderModal = function(props, children, callback) {
1414
props.ariaHideApp = false;
1515
_currentDiv = document.createElement('div');
1616
document.body.appendChild(_currentDiv);
17-
return React.render(Modal(props, children), _currentDiv, callback);
17+
return ReactDOM.render(Modal(props, children), _currentDiv, callback);
1818
};
1919

2020
unmountModal = function() {
21-
React.unmountComponentAtNode(_currentDiv);
21+
ReactDOM.unmountComponentAtNode(_currentDiv);
2222
document.body.removeChild(_currentDiv);
2323
_currentDiv = null;
2424
};

0 commit comments

Comments
 (0)