From 78c6ae28fc34f8e4c386848f890037aebd8f2725 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Fri, 4 Aug 2017 15:32:59 +0900 Subject: [PATCH 01/14] Update package.json to require react-router 3.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a04cd0f..9e8c805 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "license": "MIT", "peerDependencies": { "react": "*", - "react-router": "^2.4.0", + "react-router": "^3.0.0", "history": "^2.1.1" }, "devDependencies": { From 12c667cd0be6a1e66c740056267144018d1c2ca8 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Fri, 4 Aug 2017 18:52:14 +0900 Subject: [PATCH 02/14] add postinstall script cmd --- package.json | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 9e8c805..67d0f26 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,30 @@ { "name": "react-router-restore-scroll", "version": "0.0.1", - "description": "Scroll positions restoration for React Router", + "description": "Scroll position restoration for React Router", "main": "lib/index.js", "repository": { "type": "git", - "url": "https://github.com/ryanflorence/react-router-relative-links.git" + "url": "https://github.com/jshin49/react-router-restore-scroll.git" }, - "bugs": "https://github.com/ryanflorence/react-router-relative-links/issues", + "bugs": "https://github.com/jshin49/react-router-restore-scroll/issues", "scripts": { "build": "babel ./modules -d lib --ignore '__tests__'", "build-umd": "NODE_ENV=production webpack modules/RestoreScroll.js umd/RestoreScroll.js", "build-min": "NODE_ENV=production webpack -p modules/RestoreScroll.js umd/RestoreScroll.min.js", "lint": "eslint modules", + "postinstall": "npm-scripts/postinstall.js", "start": "webpack-dev-server --config example/webpack.config.js --inline --content-base example", "test": "npm run lint && karma start" }, "authors": [ - "Ryan Florence" + "Ryan Florence", + "Jay Shin" ], "license": "MIT", "peerDependencies": { "react": "*", - "react-router": "^3.0.0", - "history": "^2.1.1" + "react-router": "^3.0.0" }, "devDependencies": { "babel-cli": "^6.6.5", @@ -38,7 +39,6 @@ "eslint-plugin-react": "*", "expect": "^1.12.0", "gzip-size": "^3.0.0", - "history": "^2.1.1", "karma": "^0.13.3", "karma-browserstack-launcher": "^0.1.3", "karma-chrome-launcher": "^0.2.0", @@ -51,7 +51,7 @@ "pretty-bytes": "^2.0.1", "react": "^15.0.1", "react-dom": "^15.0.1", - "react-router": "^2.4.0", + "react-router": "^3.0.0", "rimraf": "^2.4.2", "webpack": "^1.12.6", "webpack-dev-middleware": "^1.2.0", @@ -61,12 +61,14 @@ "react", "react router", "scroll", - "scroll behavior" + "scroll behavior", + "restore scroll" ], "keywords": [ "react", "react router", "scroll", - "scroll behavior" + "scroll behavior", + "restore scroll" ] } From 08d2338ef2001c7d7f1622516637d3eae39c1df0 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Fri, 4 Aug 2017 19:13:04 +0900 Subject: [PATCH 03/14] Updated readme --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 662624d..c90a552 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,25 @@ +# Updates for this fork + +This is a fork of [ryanflorence/react-router-restore-scroll](https://github.com/ryanflorence/react-router-restore-scroll). + +The above library seems to be unmaintained so I forked it to support React v16 and fix some other minor issues. + +I recommend using node v8.1.2 and the latest npm version in order to use this version, and to use react-router@3. + +## Major differences: +1. Removed deprecated usages of React in order to support React v16. (TODO) +2. Fixed this repo to directly allow installation with npm. +3. Fixed wrong link in ```package.json``` + +## How to use: +Add the following in your ```package.json``` +```javascript +... +"react-router-restore-scroll": "git+https://github.com/jshin49/react-router-restore-scroll.git", +... +``` + + # Restore Scroll Restore the scroll positions of `window` and scrollable elements when From 72264a7161560c3e62fcf8de3f45161787633d58 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 11:43:48 +0900 Subject: [PATCH 04/14] added create react class lib --- package.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 67d0f26..ef37e5d 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "license": "MIT", "peerDependencies": { "react": "*", - "react-router": "^3.0.0" + "react-router": "^3.0.0", + "create-react-class": "^15.6.0" }, "devDependencies": { "babel-cli": "^6.6.5", @@ -34,6 +35,7 @@ "babel-preset-es2015": "^6.6.0", "babel-preset-react": "^6.5.0", "babel-preset-stage-1": "^6.5.0", + "create-react-class": "^15.6.0", "eslint": "*", "eslint-config-rackt": "*", "eslint-plugin-react": "*", @@ -70,5 +72,7 @@ "scroll", "scroll behavior", "restore scroll" - ] + ], + "dependencies": { + } } From 4c49ee5e13692ba78a07aa79e4432b8deca6766f Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 11:44:51 +0900 Subject: [PATCH 05/14] removed deprecated react.create class --- modules/RestoreScroll.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/RestoreScroll.js b/modules/RestoreScroll.js index 74cdf2a..1137268 100644 --- a/modules/RestoreScroll.js +++ b/modules/RestoreScroll.js @@ -1,7 +1,8 @@ import React from 'react' +import createReactClass from 'create-react-class' import { findDOMNode } from 'react-dom' -const RestoreScroll = React.createClass({ +const RestoreScroll = createReactClass({ contextTypes: { router: React.PropTypes.object.isRequired @@ -28,4 +29,3 @@ const RestoreScroll = React.createClass({ }) export default RestoreScroll - From 1548334a9ab0b52697cc19154319c0c058e94f59 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 11:59:55 +0900 Subject: [PATCH 06/14] fixed postinstall script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef37e5d..4ebf3aa 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build-umd": "NODE_ENV=production webpack modules/RestoreScroll.js umd/RestoreScroll.js", "build-min": "NODE_ENV=production webpack -p modules/RestoreScroll.js umd/RestoreScroll.min.js", "lint": "eslint modules", - "postinstall": "npm-scripts/postinstall.js", + "postinstall": "node npm-scripts/postinstall.js", "start": "webpack-dev-server --config example/webpack.config.js --inline --content-base example", "test": "npm run lint && karma start" }, From 67da45c36782d25040b9830fbc8b4bc7c150c2fb Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 14:38:47 +0900 Subject: [PATCH 07/14] removed deprecated react.create class --- modules/RestoreWindowScroll.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/RestoreWindowScroll.js b/modules/RestoreWindowScroll.js index c9b9900..35c6aca 100644 --- a/modules/RestoreWindowScroll.js +++ b/modules/RestoreWindowScroll.js @@ -1,6 +1,7 @@ import React from 'react' +import createReactClass from 'create-react-class' -const RestoreWindowScroll = React.createClass({ +const RestoreWindowScroll = createReactClass({ propTypes: { restoreWindow: React.PropTypes.func.isRequired, @@ -23,4 +24,3 @@ const RestoreWindowScroll = React.createClass({ }) export default RestoreWindowScroll - From a3264cab70b24dda52176dc73982ead7eb623a74 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 15:16:39 +0900 Subject: [PATCH 08/14] removed deprecated react.PropTypes --- modules/RestoreScroll.js | 5 +++-- modules/RestoreWindowScroll.js | 5 +++-- package.json | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/RestoreScroll.js b/modules/RestoreScroll.js index 1137268..6e5eebc 100644 --- a/modules/RestoreScroll.js +++ b/modules/RestoreScroll.js @@ -1,15 +1,16 @@ import React from 'react' +import PropTypes from 'prop-types' import createReactClass from 'create-react-class' import { findDOMNode } from 'react-dom' const RestoreScroll = createReactClass({ contextTypes: { - router: React.PropTypes.object.isRequired + router: PropTypes.object.isRequired }, propTypes: { - scrollKey: React.PropTypes.string.isRequired + scrollKey: PropTypes.string.isRequired }, componentDidMount() { diff --git a/modules/RestoreWindowScroll.js b/modules/RestoreWindowScroll.js index 35c6aca..0655af9 100644 --- a/modules/RestoreWindowScroll.js +++ b/modules/RestoreWindowScroll.js @@ -1,11 +1,12 @@ import React from 'react' +import PropTypes from 'prop-types'; import createReactClass from 'create-react-class' const RestoreWindowScroll = createReactClass({ propTypes: { - restoreWindow: React.PropTypes.func.isRequired, - location: React.PropTypes.object.isRequired + restoreWindow: PropTypes.func.isRequired, + location: PropTypes.object.isRequired }, componentDidMount() { diff --git a/package.json b/package.json index 4ebf3aa..b58589d 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "karma-webpack": "^1.7.0", "mocha": "^2.0.1", "pretty-bytes": "^2.0.1", + "prop-types": "^15.5.10", "react": "^15.0.1", "react-dom": "^15.0.1", "react-router": "^3.0.0", @@ -73,6 +74,5 @@ "scroll behavior", "restore scroll" ], - "dependencies": { - } + "dependencies": {} } From de15df395ed97c686494ebfac2b4ba513230e2a1 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 15:33:46 +0900 Subject: [PATCH 09/14] Update README.md --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c90a552..bd2cfcd 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,35 @@ The above library seems to be unmaintained so I forked it to support React v16 a I recommend using node v8.1.2 and the latest npm version in order to use this version, and to use react-router@3. ## Major differences: -1. Removed deprecated usages of React in order to support React v16. (TODO) +1. Removed deprecated usages of React.createClass and React.PropTypes in order to support React v16. +- Before +```javascript +import React from 'react' + +const RestoreScroll = React.createClass({ +... + propTypes: { + scrollKey: React.PropTypes.string.isRequired + }, +... +)} +``` + +- After +```javascript +import React from 'react' +import PropTypes from 'prop-types' +import createReactClass from 'create-react-class' + +const RestoreScroll = createReactClass({ +... + propTypes: { + scrollKey: PropTypes.string.isRequired + }, +... +)} +``` + 2. Fixed this repo to directly allow installation with npm. 3. Fixed wrong link in ```package.json``` From d9247d86b6100735ba5717520c20bdc1d112d6c9 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Mon, 7 Aug 2017 15:34:27 +0900 Subject: [PATCH 10/14] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index bd2cfcd..2b5c0dc 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,10 @@ const RestoreScroll = createReactClass({ )} ``` +Referring to +- https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.createclass +- https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes + 2. Fixed this repo to directly allow installation with npm. 3. Fixed wrong link in ```package.json``` From fc33f9163e328d5ea80b61ec58272006cbef8b4e Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Tue, 8 Aug 2017 15:22:26 +0900 Subject: [PATCH 11/14] remove first and add check for push and replace in unlisten --- modules/useHistoryRestoreScroll.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/useHistoryRestoreScroll.js b/modules/useHistoryRestoreScroll.js index 1a29f58..beea6c5 100644 --- a/modules/useHistoryRestoreScroll.js +++ b/modules/useHistoryRestoreScroll.js @@ -34,7 +34,6 @@ const useHistoryRestoreScroll = (createHistory) => ( const initialScrollKey = sessionStorage.initialScrollKey || createKey() let currentScrollKey = sessionStorage.currentScrollKey || initialScrollKey - let first = true window.addEventListener('beforeunload', () => { saveScrollPositions() @@ -108,9 +107,7 @@ const useHistoryRestoreScroll = (createHistory) => ( } const unlisten = history.listen((location) => { - if (first) { - first = false - } else { + if (location.action === 'PUSH' || location.action === 'REPLACE') { saveScrollPositions() } currentScrollKey = ( @@ -138,4 +135,3 @@ const useHistoryRestoreScroll = (createHistory) => ( ) export default useHistoryRestoreScroll - From b1032c0b7a3f28c401651c540d79ae8722332111 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Tue, 8 Aug 2017 15:25:48 +0900 Subject: [PATCH 12/14] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2b5c0dc..bddc158 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ Referring to 2. Fixed this repo to directly allow installation with npm. 3. Fixed wrong link in ```package.json``` +4. Fixed not restoring scroll for the first ```POP``` action. +5. Only save scroll position when ```PUSH``` or ```REPLACE``` action. ## How to use: Add the following in your ```package.json``` From 8a9f6e7e330946ca7584c1a1d3f2f4d927a2d5a3 Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Tue, 8 Aug 2017 19:06:14 +0900 Subject: [PATCH 13/14] add history to peer dependencies --- package.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b58589d..4ddd52f 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "peerDependencies": { "react": "*", "react-router": "^3.0.0", - "create-react-class": "^15.6.0" + "create-react-class": "^15.6.0", + "history": "^4.6.3" }, "devDependencies": { "babel-cli": "^6.6.5", @@ -41,6 +42,7 @@ "eslint-plugin-react": "*", "expect": "^1.12.0", "gzip-size": "^3.0.0", + "history": "^4.6.3", "karma": "^0.13.3", "karma-browserstack-launcher": "^0.1.3", "karma-chrome-launcher": "^0.2.0", @@ -74,5 +76,6 @@ "scroll behavior", "restore scroll" ], - "dependencies": {} + "dependencies": { + } } From d720bba0a19ff77ecd116e130e3c31fedc5a06da Mon Sep 17 00:00:00 2001 From: Jay Shin Date: Wed, 9 Aug 2017 10:50:22 +0900 Subject: [PATCH 14/14] remove history --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 4ddd52f..5a6cf4b 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,7 @@ "peerDependencies": { "react": "*", "react-router": "^3.0.0", - "create-react-class": "^15.6.0", - "history": "^4.6.3" + "create-react-class": "^15.6.0" }, "devDependencies": { "babel-cli": "^6.6.5", @@ -42,7 +41,6 @@ "eslint-plugin-react": "*", "expect": "^1.12.0", "gzip-size": "^3.0.0", - "history": "^4.6.3", "karma": "^0.13.3", "karma-browserstack-launcher": "^0.1.3", "karma-chrome-launcher": "^0.2.0",