From 5447834a029feeef9646dacc4c748d20ff2def85 Mon Sep 17 00:00:00 2001 From: Boris Nadion Date: Fri, 3 Jul 2015 00:37:05 +0300 Subject: [PATCH 1/3] allow props=sticky element to allow using things like react-headroom --- build/react-infinite.js | 4 +++- src/react-infinite.jsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build/react-infinite.js b/build/react-infinite.js index 3a67058..108fb76 100644 --- a/build/react-infinite.js +++ b/build/react-infinite.js @@ -47,7 +47,8 @@ var Infinite = React.createClass({displayName: "Infinite", loadingSpinnerDelegate: React.createElement("div", null), onInfiniteLoad: function() {}, isInfiniteLoading: false, - timeScrollStateLastsForAfterUserScrolls: 150 + timeScrollStateLastsForAfterUserScrolls: 150, + sticky: null }; }, @@ -246,6 +247,7 @@ var Infinite = React.createClass({displayName: "Infinite", React.createElement("div", {ref: "smoothScrollingWrapper", style: infiniteScrollStyles}, React.createElement("div", {ref: "topSpacer", style: this.buildHeightStyle(topSpacerHeight)}), + this.props.sticky, displayables, React.createElement("div", {ref: "bottomSpacer", style: this.buildHeightStyle(bottomSpacerHeight)}), diff --git a/src/react-infinite.jsx b/src/react-infinite.jsx index d31982d..607bf47 100644 --- a/src/react-infinite.jsx +++ b/src/react-infinite.jsx @@ -47,7 +47,8 @@ var Infinite = React.createClass({ loadingSpinnerDelegate:
, onInfiniteLoad: () => {}, isInfiniteLoading: false, - timeScrollStateLastsForAfterUserScrolls: 150 + timeScrollStateLastsForAfterUserScrolls: 150, + sticky: null }; }, @@ -246,6 +247,7 @@ var Infinite = React.createClass({
+ {this.props.sticky} {displayables}
From 62e0fbfc6c22e62f6dd89a9634be4acabd4bff5a Mon Sep 17 00:00:00 2001 From: Boris Nadion Date: Fri, 3 Jul 2015 00:44:44 +0300 Subject: [PATCH 2/3] dist --- dist/react-infinite.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dist/react-infinite.js b/dist/react-infinite.js index 5599992..5dfbee0 100644 --- a/dist/react-infinite.js +++ b/dist/react-infinite.js @@ -49,7 +49,8 @@ var Infinite = React.createClass({displayName: "Infinite", loadingSpinnerDelegate: React.createElement("div", null), onInfiniteLoad: function() {}, isInfiniteLoading: false, - timeScrollStateLastsForAfterUserScrolls: 150 + timeScrollStateLastsForAfterUserScrolls: 150, + sticky: null }; }, @@ -248,6 +249,7 @@ var Infinite = React.createClass({displayName: "Infinite", React.createElement("div", {ref: "smoothScrollingWrapper", style: infiniteScrollStyles}, React.createElement("div", {ref: "topSpacer", style: this.buildHeightStyle(topSpacerHeight)}), + this.props.sticky, displayables, React.createElement("div", {ref: "bottomSpacer", style: this.buildHeightStyle(bottomSpacerHeight)}), From fe789abadc089f13b90452b93344cd252b3b5dc4 Mon Sep 17 00:00:00 2001 From: Boris Nadion Date: Sun, 5 Jul 2015 13:37:46 +0300 Subject: [PATCH 3/3] dont manageScrollTimeouts when timeScrollStateLastsForAfterUserScrolls is 0 --- build/react-infinite.js | 3 +++ dist/react-infinite.js | 3 +++ src/react-infinite.jsx | 3 +++ 3 files changed, 9 insertions(+) diff --git a/build/react-infinite.js b/build/react-infinite.js index 108fb76..5fca4c3 100644 --- a/build/react-infinite.js +++ b/build/react-infinite.js @@ -176,6 +176,9 @@ var Infinite = React.createClass({displayName: "Infinite", manageScrollTimeouts:function() { // Maintains a series of timeouts to set this.state.isScrolling // to be true when the element is scrolling. + if (!this.props.timeScrollStateLastsForAfterUserScrolls) { + return; + } if (this.state.scrollTimeout) { clearTimeout(this.state.scrollTimeout); diff --git a/dist/react-infinite.js b/dist/react-infinite.js index 5dfbee0..2e9857f 100644 --- a/dist/react-infinite.js +++ b/dist/react-infinite.js @@ -178,6 +178,9 @@ var Infinite = React.createClass({displayName: "Infinite", manageScrollTimeouts:function() { // Maintains a series of timeouts to set this.state.isScrolling // to be true when the element is scrolling. + if (!this.props.timeScrollStateLastsForAfterUserScrolls) { + return; + } if (this.state.scrollTimeout) { clearTimeout(this.state.scrollTimeout); diff --git a/src/react-infinite.jsx b/src/react-infinite.jsx index 607bf47..d7366af 100644 --- a/src/react-infinite.jsx +++ b/src/react-infinite.jsx @@ -176,6 +176,9 @@ var Infinite = React.createClass({ manageScrollTimeouts() { // Maintains a series of timeouts to set this.state.isScrolling // to be true when the element is scrolling. + if (!this.props.timeScrollStateLastsForAfterUserScrolls) { + return; + } if (this.state.scrollTimeout) { clearTimeout(this.state.scrollTimeout);