Skip to content

Commit 001f7df

Browse files
authored
Merge pull request #174 from orgsync/min-size
Fix #173 Add minSize prop
2 parents b59a2f0 + f3c2ca6 commit 001f7df

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,15 @@ used when the prop `type` is set to `variable`.
101101

102102
The number of items in the list.
103103

104+
#### minSize (defaults to `1`)
105+
106+
The minimum number of items to render at any given time. This can be used to
107+
render some amount of items initially when rendering HTML on the server.
108+
104109
##### pageSize (defaults to `10`)
105110

106-
The number of items to batch up for new renders.
111+
The number of items to batch up for new renders. Does not apply to `'uniform'`
112+
lists as the optimal number of items is calculated automatically.
107113

108114
##### scrollParentGetter (defaults to finding the nearest scrollable parent)
109115

react-list.es6

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ module.exports = class ReactList extends Component {
5454
itemSizeGetter: PropTypes.func,
5555
itemsRenderer: PropTypes.func,
5656
length: PropTypes.number,
57+
minSize: PropTypes.number,
5758
pageSize: PropTypes.number,
5859
scrollParentGetter: PropTypes.func,
5960
threshold: PropTypes.number,
@@ -67,6 +68,7 @@ module.exports = class ReactList extends Component {
6768
itemRenderer: (index, key) => <div key={key}>{index}</div>,
6869
itemsRenderer: (items, ref) => <div ref={ref}>{items}</div>,
6970
length: 0,
71+
minSize: 1,
7072
pageSize: 10,
7173
threshold: 100,
7274
type: 'simple',
@@ -392,8 +394,8 @@ module.exports = class ReactList extends Component {
392394
if (itemSizeEstimator) return itemSizeEstimator(index, cache);
393395
}
394396

395-
constrain(from, size, itemsPerRow, {length, type}) {
396-
if (type === 'uniform') size = Math.max(size, 1);
397+
constrain(from, size, itemsPerRow, {length, minSize, type}) {
398+
size = Math.max(size, minSize);
397399
let mod = size % itemsPerRow;
398400
if (mod) size += itemsPerRow - mod;
399401
if (size > length) size = length;

react-list.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,9 +523,10 @@
523523
key: 'constrain',
524524
value: function constrain(from, size, itemsPerRow, _ref) {
525525
var length = _ref.length,
526+
minSize = _ref.minSize,
526527
type = _ref.type;
527528

528-
if (type === 'uniform') size = Math.max(size, 1);
529+
size = Math.max(size, minSize);
529530
var mod = size % itemsPerRow;
530531
if (mod) size += itemsPerRow - mod;
531532
if (size > length) size = length;
@@ -649,6 +650,7 @@
649650
itemSizeGetter: _propTypes2.default.func,
650651
itemsRenderer: _propTypes2.default.func,
651652
length: _propTypes2.default.number,
653+
minSize: _propTypes2.default.number,
652654
pageSize: _propTypes2.default.number,
653655
scrollParentGetter: _propTypes2.default.func,
654656
threshold: _propTypes2.default.number,
@@ -672,6 +674,7 @@
672674
);
673675
},
674676
length: 0,
677+
minSize: 1,
675678
pageSize: 10,
676679
threshold: 100,
677680
type: 'simple',

0 commit comments

Comments
 (0)