diff --git a/README.md b/README.md index b33eb11..39f3d0c 100644 --- a/README.md +++ b/README.md @@ -92,3 +92,12 @@ You can define a custom `parentNode` element to base the scroll calulations on. | `threshold` | `Number` | `250` | The distance in pixels before the end of the items that will trigger a call to `loadMore`.| | `useCapture` | `Boolean` | `false` | Proxy to the `useCapture` option of the added event listeners.| | `useWindow` | `Boolean` | `true` | Add scroll listeners to the window, or else, the component's `parentNode`.| + +### Public Methods + +##### reset +Forcefully reset the local page based on `pageStart`. If the prop `initialLoad` is provided, force call `loadMore` with the start page. + +This may be appropriate if the api that inserts data in the list is reset, and the next page will be the initial page and not the last page known by InfiniteScroll. This is very common in listings with InfiniteScroll and search input. + +For the access public methods use `ref` prop. diff --git a/package-lock.json b/package-lock.json index 3cdbd47..000b929 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-infinite-scroller", - "version": "1.2.2", + "version": "1.2.4", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3115,7 +3115,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.1.1", @@ -3166,7 +3167,8 @@ "balanced-match": { "version": "0.4.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "bcrypt-pbkdf": { "version": "1.0.1", @@ -3181,6 +3183,7 @@ "version": "0.0.9", "bundled": true, "dev": true, + "optional": true, "requires": { "inherits": "~2.0.0" } @@ -3189,6 +3192,7 @@ "version": "2.10.1", "bundled": true, "dev": true, + "optional": true, "requires": { "hoek": "2.x.x" } @@ -3197,6 +3201,7 @@ "version": "1.1.7", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^0.4.1", "concat-map": "0.0.1" @@ -3205,7 +3210,8 @@ "buffer-shims": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "caseless": { "version": "0.12.0", @@ -3222,12 +3228,14 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "combined-stream": { "version": "1.0.5", "bundled": true, "dev": true, + "optional": true, "requires": { "delayed-stream": "~1.0.0" } @@ -3235,17 +3243,20 @@ "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "cryptiles": { "version": "2.0.5", @@ -3291,7 +3302,8 @@ "delayed-stream": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "delegates": { "version": "1.0.0", @@ -3317,7 +3329,8 @@ "extsprintf": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "forever-agent": { "version": "0.6.1", @@ -3339,12 +3352,14 @@ "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "fstream": { "version": "1.0.11", "bundled": true, "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -3400,6 +3415,7 @@ "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3412,7 +3428,8 @@ "graceful-fs": { "version": "4.1.11", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "har-schema": { "version": "1.0.5", @@ -3451,7 +3468,8 @@ "hoek": { "version": "2.16.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "http-signature": { "version": "1.1.1", @@ -3468,6 +3486,7 @@ "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3476,7 +3495,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.4", @@ -3488,6 +3508,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3501,7 +3522,8 @@ "isarray": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "isstream": { "version": "0.1.2", @@ -3574,12 +3596,14 @@ "mime-db": { "version": "1.27.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "mime-types": { "version": "2.1.15", "bundled": true, "dev": true, + "optional": true, "requires": { "mime-db": "~1.27.0" } @@ -3588,6 +3612,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3595,12 +3620,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3653,7 +3680,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "oauth-sign": { "version": "0.8.2", @@ -3671,6 +3699,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3700,7 +3729,8 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "performance-now": { "version": "0.2.0", @@ -3711,7 +3741,8 @@ "process-nextick-args": { "version": "1.0.7", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "punycode": { "version": "1.4.1", @@ -3749,6 +3780,7 @@ "version": "2.2.9", "bundled": true, "dev": true, + "optional": true, "requires": { "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", @@ -3793,6 +3825,7 @@ "version": "2.6.1", "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "^7.0.5" } @@ -3800,7 +3833,8 @@ "safe-buffer": { "version": "5.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "semver": { "version": "5.3.0", @@ -3858,6 +3892,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3868,6 +3903,7 @@ "version": "1.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -3882,6 +3918,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3896,6 +3933,7 @@ "version": "2.2.1", "bundled": true, "dev": true, + "optional": true, "requires": { "block-stream": "*", "fstream": "^1.0.2", @@ -3951,7 +3989,8 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "uuid": { "version": "3.0.1", @@ -3980,7 +4019,8 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -6217,6 +6257,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -6966,7 +7007,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", diff --git a/package.json b/package.json index 472928b..d9aabe6 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,7 @@ "url": "git://github.com/CassetteRocks/react-infinite-scroller.git" }, "scripts": { - "build": - "mkdirp dist && babel src/InfiniteScroll.js --out-file dist/InfiniteScroll.js", + "build": "mkdirp dist && babel src/InfiniteScroll.js --out-file dist/InfiniteScroll.js", "prepublish": "npm run build", "test": "nyc npm run spec", "spec": "_mocha -R spec ./test/test_helper.js --recursive test/*_test.js", @@ -23,7 +22,11 @@ "git add" ] }, - "keywords": ["infinite", "scroll", "react"], + "keywords": [ + "infinite", + "scroll", + "react" + ], "author": "CassetteRocks", "license": "MIT", "bugs": { diff --git a/src/InfiniteScroll.js b/src/InfiniteScroll.js index b08637e..76b7201 100644 --- a/src/InfiniteScroll.js +++ b/src/InfiniteScroll.js @@ -63,6 +63,24 @@ export default class InfiniteScroll extends Component { this.detachMousewheelListener(); } + scrollToTop() { + const parentElement = this.getParentElement(this.scrollComponent); + + let scrollEl = window; + + if (this.props.useWindow === false) { + scrollEl = parentElement; + } + + scrollEl.scrollTop = 0; + } + + reset() { + this.pageLoaded = this.props.pageStart; + + this.scrollToTop(); + } + isPassiveSupported() { let passive = false;