Skip to content

Commit f62dd55

Browse files
committed
🐞 fix outlayer bug when loading 0 items
1 parent 4cd29ab commit f62dd55

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

js/page-load.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,22 +106,19 @@ proto.appendNextPage = function( response, path ) {
106106
};
107107

108108
proto.appendItems = function( items, fragment ) {
109-
// get fragment if not provided
110-
fragment = fragment || getItemsFragment( items );
111-
if ( !fragment ) {
109+
if ( !items || !items.length ) {
112110
return;
113111
}
112+
// get fragment if not provided
113+
fragment = fragment || getItemsFragment( items );
114114
refreshScripts( fragment );
115115
this.element.appendChild( fragment );
116116
};
117117

118118
function getItemsFragment( items ) {
119-
if ( !items || !items.length ) {
120-
return;
121-
}
122119
// add items to fragment
123120
var fragment = document.createDocumentFragment();
124-
for ( var i=0; i < items.length; i++ ) {
121+
for ( var i=0; items && i < items.length; i++ ) {
125122
fragment.appendChild( items[i] );
126123
}
127124
return fragment;

test/unit/outlayer.js

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ QUnit.test( 'outlayer', function( assert ) {
55
var msnry, infScroll;
66
var demoElem = document.querySelector('.demo--outlayer');
77

8-
var done = assert.async( 6 );
8+
var done = assert.async( 7 );
99

1010
imagesLoaded( demoElem, function() {
1111

@@ -59,7 +59,26 @@ QUnit.test( 'outlayer', function( assert ) {
5959
function onLayoutComplete3( items ) {
6060
assert.equal( items.length, 10, '10 items laid out on page 3' );
6161
checkItems( items );
62-
done();
62+
setTimeout( loadNoItems );
63+
}
64+
65+
// check loading no items does not throw error
66+
function loadNoItems() {
67+
infScroll.destroy();
68+
infScroll = new InfiniteScroll( '.demo--outlayer', {
69+
path: 'page/outlayer{{#}}.html',
70+
append: 'none',
71+
outlayer: msnry,
72+
history: false,
73+
scrollThreshold: false,
74+
});
75+
76+
infScroll.once( 'load', done );
77+
infScroll.once( 'append', function( response, path, items ) {
78+
assert.equal( items.length, 0, 'appended 0 items' );
79+
done();
80+
})
81+
infScroll.loadNextPage();
6382
}
6483

6584
});

0 commit comments

Comments
 (0)