Skip to content

Commit 9b0d2c7

Browse files
committed
Fix simple list regression, 0.7.18
1 parent 8f9820c commit 9b0d2c7

3 files changed

Lines changed: 41 additions & 24 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-list",
3-
"version": "0.7.17",
3+
"version": "0.7.18",
44
"author": "Casey Foster <c@sey.me>",
55
"license": "MIT",
66
"main": "react-list.js",

react-list.es6

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,18 @@ export default class extends Component {
151151
scrollParent[SCROLL_SIZE_KEYS[axis]];
152152
}
153153

154+
hasDeterminateSize() {
155+
const {itemSizeGetter, type} = this.props;
156+
return type === 'uniform' || itemSizeGetter;
157+
}
158+
154159
getStartAndEnd(threshold = this.props.threshold) {
155160
const scroll = this.getScroll();
156161
const start = Math.max(0, scroll - threshold);
157-
const end = Math.min(
158-
scroll + this.getViewportSize() + threshold,
159-
this.getSpaceBefore(this.props.length)
160-
);
162+
let end = scroll + this.getViewportSize() + threshold;
163+
if (this.hasDeterminateSize()) {
164+
end = Math.min(end, this.getSpaceBefore(this.props.length));
165+
}
161166
return {start, end};
162167
}
163168

react-list.js

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -230,14 +230,26 @@
230230

231231
return scrollParent === window ? document.body[SCROLL_SIZE_KEYS[axis]] : scrollParent[SCROLL_SIZE_KEYS[axis]];
232232
}
233+
}, {
234+
key: 'hasDeterminateSize',
235+
value: function hasDeterminateSize() {
236+
var _props3 = this.props;
237+
var itemSizeGetter = _props3.itemSizeGetter;
238+
var type = _props3.type;
239+
240+
return type === 'uniform' || itemSizeGetter;
241+
}
233242
}, {
234243
key: 'getStartAndEnd',
235244
value: function getStartAndEnd() {
236245
var threshold = arguments.length <= 0 || arguments[0] === undefined ? this.props.threshold : arguments[0];
237246

238247
var scroll = this.getScroll();
239248
var start = Math.max(0, scroll - threshold);
240-
var end = Math.min(scroll + this.getViewportSize() + threshold, this.getSpaceBefore(this.props.length));
249+
var end = scroll + this.getViewportSize() + threshold;
250+
if (this.hasDeterminateSize()) {
251+
end = Math.min(end, this.getSpaceBefore(this.props.length));
252+
}
241253
return { start: start, end: end };
242254
}
243255
}, {
@@ -315,9 +327,9 @@
315327

316328
if (elEnd > end) return cb();
317329

318-
var _props3 = this.props;
319-
var pageSize = _props3.pageSize;
320-
var length = _props3.length;
330+
var _props4 = this.props;
331+
var pageSize = _props4.pageSize;
332+
var length = _props4.length;
321333

322334
this.setState({ size: Math.min(this.state.size + pageSize, length) }, cb);
323335
}
@@ -330,9 +342,9 @@
330342

331343
var start = _getStartAndEnd2.start;
332344
var end = _getStartAndEnd2.end;
333-
var _props4 = this.props;
334-
var length = _props4.length;
335-
var pageSize = _props4.pageSize;
345+
var _props5 = this.props;
346+
var length = _props5.length;
347+
var pageSize = _props5.pageSize;
336348

337349
var space = 0;
338350
var from = 0;
@@ -430,10 +442,10 @@
430442
value: function getSizeOf(index) {
431443
var cache = this.cache;
432444
var items = this.items;
433-
var _props5 = this.props;
434-
var axis = _props5.axis;
435-
var itemSizeGetter = _props5.itemSizeGetter;
436-
var type = _props5.type;
445+
var _props6 = this.props;
446+
var axis = _props6.axis;
447+
var itemSizeGetter = _props6.itemSizeGetter;
448+
var type = _props6.type;
437449
var _state3 = this.state;
438450
var from = _state3.from;
439451
var itemSize = _state3.itemSize;
@@ -518,9 +530,9 @@
518530
value: function renderItems() {
519531
var _this = this;
520532

521-
var _props6 = this.props;
522-
var itemRenderer = _props6.itemRenderer;
523-
var itemsRenderer = _props6.itemsRenderer;
533+
var _props7 = this.props;
534+
var itemRenderer = _props7.itemRenderer;
535+
var itemsRenderer = _props7.itemsRenderer;
524536
var _state5 = this.state;
525537
var from = _state5.from;
526538
var size = _state5.size;
@@ -535,11 +547,11 @@
535547
}, {
536548
key: 'render',
537549
value: function render() {
538-
var _props7 = this.props;
539-
var axis = _props7.axis;
540-
var length = _props7.length;
541-
var type = _props7.type;
542-
var useTranslate3d = _props7.useTranslate3d;
550+
var _props8 = this.props;
551+
var axis = _props8.axis;
552+
var length = _props8.length;
553+
var type = _props8.type;
554+
var useTranslate3d = _props8.useTranslate3d;
543555
var _state6 = this.state;
544556
var from = _state6.from;
545557
var itemsPerRow = _state6.itemsPerRow;

0 commit comments

Comments
 (0)