From 3edb928d83df9882ffe22633a07d1cd92bef31a9 Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Mon, 11 Apr 2016 18:11:40 -0400
Subject: [PATCH 1/8] Updating react and react-dom peerDependencies to work
 with both 0.14.x and 15.x.x, Updating react-addons-* in dependencies and
 devDependencies to work with both 0.14.x and 15.x.x

---
 package.json | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/package.json b/package.json
index 98a1fde4..e3da23c9 100644
--- a/package.json
+++ b/package.json
@@ -42,8 +42,8 @@
     "url": "https://github.com/onefinestay/react-daterange-picker"
   },
   "peerDependencies": {
-    "react": ">=0.14.0",
-    "react-dom": ">=0.14.0"
+    "react": "0.14.x || 15.x.x",
+    "react-dom": "0.14.x || 15.x.x"
   },
   "dependencies": {
     "calendar": "^0.1.0",
@@ -51,7 +51,7 @@
     "immutable": "^3.7.2",
     "moment": "^2.10.6",
     "moment-range": "^2.0.3",
-    "react-addons-pure-render-mixin": "^0.14.0"
+    "react-addons-pure-render-mixin": "^0.14.0 || 15.x.x"
   },
   "devDependencies": {
     "babel": "^5.2.16",
@@ -89,7 +89,7 @@
     "object.assign": "^1.1.1",
     "phantomjs": "^1.9.18",
     "run-sequence": "~1.1.4",
-    "react-addons-test-utils": "^0.14.0",
+    "react-addons-test-utils": "^0.14.0 || 15.x.x",
     "timekeeper": "0.0.5",
     "transform-loader": "^0.2.1",
     "underscore": "^1.8.3",

From 6cf5d2fb34ad98eb07a228adc3561f17c58cbe0c Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 10:16:09 -0400
Subject: [PATCH 2/8] Re-updating peerDependencies after merging in
 a50d53c55d7b39e2add269aff7f36a591b51fa73

---
 package.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package.json b/package.json
index 75d71104..f98a4434 100644
--- a/package.json
+++ b/package.json
@@ -42,8 +42,8 @@
     "url": "https://github.com/onefinestay/react-daterange-picker"
   },
   "peerDependencies": {
-    "react": "^0.14.0",
-    "react-dom": "^0.14.0"
+    "react": "^0.14.0 || 15.x.x",
+    "react-dom": "^0.14.0 || 15.x.x"
   },
   "dependencies": {
     "calendar": "^0.1.0",

From c1bd5d153eeb32e51891e52d30044a1a93373fd3 Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 10:16:54 -0400
Subject: [PATCH 3/8] Fixing renderToString reference in build-example task
 (now on ReactDOM/Server)

---
 gulpfile.babel.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index dac5c461..f07d15e1 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -6,6 +6,7 @@ import gulp from 'gulp';
 
 import gulpLoadPlugins from 'gulp-load-plugins';
 import React from 'react';
+import ReactDOMServer from 'react-dom/server';
 import webpack from 'webpack';
 import { Server as KarmaServer } from 'karma';
 import clean from 'del';
@@ -155,7 +156,7 @@ gulp.task('build-example', function() {
   });
 
   var Index = React.createFactory(require('./example/base.jsx'));
-  var markup = '<!document html>' + React.renderToString(Index());
+  var markup = '<!document html>' + ReactDOMServer.renderToString(Index());
 
   // write file
   fs.writeFileSync('./example/index.html', markup);

From 70bac54864b4d4b198500ebfcbe6766b479b62af Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 10:17:33 -0400
Subject: [PATCH 4/8] Fixing React.findDOMNode references (now permanently on
 ReactDOM, as of 15.0.0)

---
 src/calendar/tests/CalendarDate.spec.js | 3 ++-
 src/tests/DateRangePicker.spec.js       | 3 ++-
 src/tests/Legend.spec.js                | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/calendar/tests/CalendarDate.spec.js b/src/calendar/tests/CalendarDate.spec.js
index 327f1aff..9717501f 100644
--- a/src/calendar/tests/CalendarDate.spec.js
+++ b/src/calendar/tests/CalendarDate.spec.js
@@ -1,4 +1,5 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import TestUtils from 'react-addons-test-utils';
 import moment from 'moment';
 import _ from 'underscore';
@@ -72,7 +73,7 @@ describe('The CalendarDate Component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(React.findDOMNode(this.component).parentNode);
+      React.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 
diff --git a/src/tests/DateRangePicker.spec.js b/src/tests/DateRangePicker.spec.js
index 5311d46d..3b58d477 100644
--- a/src/tests/DateRangePicker.spec.js
+++ b/src/tests/DateRangePicker.spec.js
@@ -9,6 +9,7 @@ import isMomentRange from '../utils/isMomentRange';
 import areMomentRangesEqual from '../utils/areMomentRangesEqual';
 import Immutable from 'immutable';
 import React from 'react';
+import ReactDOM from 'react-dom';
 import TestUtils from 'react-addons-test-utils';
 import _ from 'underscore';
 
@@ -75,7 +76,7 @@ describe('The DateRangePicker component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(React.findDOMNode(this.component).parentNode);
+      React.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 
diff --git a/src/tests/Legend.spec.js b/src/tests/Legend.spec.js
index 0da7de2a..f98c5be5 100644
--- a/src/tests/Legend.spec.js
+++ b/src/tests/Legend.spec.js
@@ -1,4 +1,5 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import TestUtils from 'react-addons-test-utils';
 import Legend from '../Legend';
 import _ from 'underscore';
@@ -32,7 +33,7 @@ describe('The Legend component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(React.findDOMNode(this.component).parentNode);
+      React.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 

From c362c902f1a28b5fc57a3a988ac9a7d2aad4acc5 Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 10:22:14 -0400
Subject: [PATCH 5/8] Fixing new warnings in React 15 about
 controlled/uncontrolled components using null as value
 (https://facebook.github.io/react/blog/2016/04/07/react-v15.html#new-deprecations-introduced-with-a-warning)

---
 example/index.jsx | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/example/index.jsx b/example/index.jsx
index 85562029..ae781898 100644
--- a/example/index.jsx
+++ b/example/index.jsx
@@ -47,11 +47,11 @@ const DatePickerRange = React.createClass({
         <RangePicker {...this.props} onSelect={this.handleSelect} value={this.state.value} />
         <div>
           <input type="text"
-            value={this.state.value ? this.state.value.start.format('LL') : null}
+            value={this.state.value ? this.state.value.start.format('LL') : ""}
             readOnly={true}
             placeholder="Start date"/>
           <input type="text"
-            value={this.state.value ? this.state.value.end.format('LL') : null}
+            value={this.state.value ? this.state.value.end.format('LL') : ""}
             readOnly={true}
             placeholder="End date" />
         </div>
@@ -64,7 +64,7 @@ const DatePickerRange = React.createClass({
 const DatePickerSingle = React.createClass({
   getInitialState() {
     return {
-      value: null,
+      value: "",
     };
   },
 
@@ -81,7 +81,7 @@ const DatePickerSingle = React.createClass({
           value={this.state.value} />
         <div>
           <input type="text"
-            value={this.state.value ? this.state.value.format('LL') : null}
+            value={this.state.value ? this.state.value.format('LL') : ""}
             readOnly={true} />
         </div>
       </div>

From 5a937546a7b675884de8f69e2609f91eda160461 Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 12:02:19 -0400
Subject: [PATCH 6/8] Fixing "cannot render td inside tbody" react DOM warning.
 Fixing reference to unmountComponentAtNode (now permanently on ReactDOM).

---
 src/calendar/tests/CalendarDate.spec.js | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/calendar/tests/CalendarDate.spec.js b/src/calendar/tests/CalendarDate.spec.js
index 9717501f..89a0d61a 100644
--- a/src/calendar/tests/CalendarDate.spec.js
+++ b/src/calendar/tests/CalendarDate.spec.js
@@ -60,9 +60,11 @@ describe('The CalendarDate Component', function () {
     };
 
     this.useDocumentRenderer = (props) => {
-      const renderedTable = TestUtils.renderIntoDocument(<table>
-        <tbody>{getCalendarDate(props)}</tbody>
-      </table>);
+      const renderedTable = TestUtils.renderIntoDocument(
+        <table>
+          <tbody><tr>{getCalendarDate(props)}</tr></tbody>
+        </table>
+      );
       this.renderedComponent = renderedTable.querySelector('td');
     };
 
@@ -73,7 +75,7 @@ describe('The CalendarDate Component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
+      ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 

From 26bd8255945e7d15e31a096441596839dc6b871f Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 12:02:30 -0400
Subject: [PATCH 7/8] Fixing reference to unmountComponentAtNode (now
 permanently on ReactDOM).

---
 src/tests/DateRangePicker.spec.js | 2 +-
 src/tests/Legend.spec.js          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/tests/DateRangePicker.spec.js b/src/tests/DateRangePicker.spec.js
index 3b58d477..f3446975 100644
--- a/src/tests/DateRangePicker.spec.js
+++ b/src/tests/DateRangePicker.spec.js
@@ -76,7 +76,7 @@ describe('The DateRangePicker component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
+      ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 
diff --git a/src/tests/Legend.spec.js b/src/tests/Legend.spec.js
index f98c5be5..aabefba2 100644
--- a/src/tests/Legend.spec.js
+++ b/src/tests/Legend.spec.js
@@ -33,7 +33,7 @@ describe('The Legend component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
+      ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 

From 2075cd026c87b7b7e2698c22ca2df94c2f53b20a Mon Sep 17 00:00:00 2001
From: Michael Henderson <mhenderson@fullsail.com>
Date: Thu, 21 Apr 2016 12:03:00 -0400
Subject: [PATCH 8/8] Fixing reference to unmountComponentAtNode (now
 permanently on ReactDOM). Replacing getDOMNode() usage with
 ReactDOM.findDOMNode().

---
 src/calendar/tests/CalendarMonth.spec.js | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/calendar/tests/CalendarMonth.spec.js b/src/calendar/tests/CalendarMonth.spec.js
index 4d44e399..f9584fc1 100644
--- a/src/calendar/tests/CalendarMonth.spec.js
+++ b/src/calendar/tests/CalendarMonth.spec.js
@@ -1,4 +1,5 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import TestUtils from 'react-addons-test-utils';
 import CalendarMonth from '../CalendarMonth';
 import CalendarDate from '../CalendarDate';
@@ -58,7 +59,7 @@ describe('The CalendarMonth Component', function () {
 
   afterEach( function () {
     if (this.component) {
-      React.unmountComponentAtNode(React.findDOMNode(this.component).parentNode);
+      ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(this.component).parentNode);
     }
   });
 
@@ -115,12 +116,12 @@ describe('The CalendarMonth Component', function () {
 
       it('which calls props.onMonthChange if props.disableNavigation is false and if the selected value changes', function () {
         var onMonthChange = jasmine.createSpy();
-        this.useDocumentRenderer({
-          onMonthChange: onMonthChange,
-        });
-        var select = TestUtils.scryRenderedDOMComponentsWithTag(this.renderedComponent, 'select')[0].getDOMNode();
-        select.value = '2';
+        this.useDocumentRenderer({ onMonthChange: onMonthChange });
+
+        var select = TestUtils.scryRenderedDOMComponentsWithTag(this.renderedComponent, 'select')[0];
+        select.value = 2;
         TestUtils.Simulate.change(select);
+
         expect(onMonthChange).toHaveBeenCalledWith(2);
       });
 
@@ -165,7 +166,7 @@ describe('The CalendarMonth Component', function () {
         this.useDocumentRenderer({
           onYearChange: onYearChange,
         });
-        var select = TestUtils.scryRenderedDOMComponentsWithTag(this.renderedComponent, 'select')[1].getDOMNode();
+        var select = TestUtils.scryRenderedDOMComponentsWithTag(this.renderedComponent, 'select')[1];
         var value = (this.firstOfMonth.year() + 1).toString();
         select.value = value;
         TestUtils.Simulate.change(select);