Skip to content

Commit 44ab7f7

Browse files
committed
Merge pull request #12 from dhilt/v131
v1.3.1
2 parents 373f787 + da6a352 commit 44ab7f7

10 files changed

+263
-58
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
public
33
node_modules
44
temp
5-
/nbproject/private/
5+
/nbproject/private/
6+
local_development

Gruntfile.coffee

+15-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ module.exports = (grunt) ->
1010
grunt.loadNpmTasks 'grunt-contrib-uglify'
1111

1212
grunt.initConfig
13+
packageBower: grunt.file.readJSON('./bower.json')
14+
timestamp: (new Date()).toISOString()
15+
releaseData:
16+
'/*!\n' +
17+
' * <%= packageBower.name %>\n' +
18+
' * <%= packageBower.homepage %>\n' +
19+
' * Version: <%= packageBower.version %> -- <%= timestamp %>\n' +
20+
' * License: <%= packageBower.license %>\n' +
21+
' */\n'
1322
connect:
1423
app:
1524
options:
@@ -49,11 +58,11 @@ module.exports = (grunt) ->
4958
bare: true
5059
#sourceMap: true
5160

52-
#prepend 'use strict' to the files
5361
concat:
54-
#usestrict:
5562
options:
56-
banner: '(function () {\n\'use strict\';\n'
63+
#prepend 'use strict' and release data to the files
64+
banner:
65+
'<%= releaseData %> \n\n (function () {\n\'use strict\';\n'
5766
footer: '}());'
5867
stripBanners: true
5968
process: (src, filepath) ->
@@ -71,11 +80,13 @@ module.exports = (grunt) ->
7180
)
7281

7382
dynamic_mappings:
74-
files:
83+
files:
7584
'dist/ui-scroll.js': ['./temp/**/ui-scroll.js']
7685
'dist/ui-scroll-jqlite.js': ['./temp/**/ui-scroll-jqlite.js']
7786

7887
uglify:
88+
options:
89+
banner: '<%= releaseData %>'
7990
common:
8091
files:
8192
'./dist/ui-scroll.min.js': [

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,12 @@ See [index.html](http://rawgithub.com/angular-ui/ui-scroll/master/demo/index.htm
215215

216216
###History
217217

218+
###v1.3.1
219+
* Changed the logic of viewport scroll/padding recalculation (to solve the problem [#8](https://github.com/angular-ui/ui-scroll/issues/8)).
220+
* Splitted test specifications.
221+
* Updated dev-dependencies (package.json).
222+
* Implemented append/prepend methods on the adapter.
223+
218224
###v1.3.0
219225
* Reorganized the repository structure.
220226

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-ui-scroll",
3-
"version": "1.3.0",
3+
"version": "1.3.1",
44
"homepage": "https://github.com/angular-ui/ui-scroll.git",
55
"description": "AngularJS infinite scrolling module",
66
"main": "./dist/ui-scroll.js",

dist/ui-scroll-jqlite.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
(function () {
1+
/*!
2+
* angular-ui-scroll
3+
* https://github.com/angular-ui/ui-scroll.git
4+
* Version: 1.3.1 -- 2015-08-05T13:39:04.079Z
5+
* License: MIT
6+
*/
7+
8+
9+
(function () {
210
'use strict';
311
angular.module('ui.scroll.jqlite', ['ui.scroll']).service('jqLiteExtras', [
412
'$log', '$window', function(console, window) {

dist/ui-scroll-jqlite.min.js

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-scroll.js

+59-48
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
(function () {
1+
/*!
2+
* angular-ui-scroll
3+
* https://github.com/angular-ui/ui-scroll.git
4+
* Version: 1.3.1 -- 2015-08-05T13:39:04.079Z
5+
* License: MIT
6+
*/
7+
8+
9+
(function () {
210
'use strict';
311

412
/*!
@@ -150,17 +158,17 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function() {
150158
bottomPadding: function() {
151159
return bottomPadding.paddingHeight.apply(bottomPadding, arguments);
152160
},
153-
insertElement: function(e, sibling) {
154-
return insertElement(e, sibling || topPadding);
155-
},
156-
insertElementAnimated: function(e, sibling) {
157-
return insertElementAnimated(e, sibling || topPadding);
158-
},
159161
bottomDataPos: function() {
160162
return scrollHeight(viewport) - bottomPadding.paddingHeight();
161163
},
162164
topDataPos: function() {
163165
return topPadding.paddingHeight();
166+
},
167+
insertElement: function(e, sibling) {
168+
return insertElement(e, sibling || topPadding);
169+
},
170+
insertElementAnimated: function(e, sibling) {
171+
return insertElementAnimated(e, sibling || topPadding);
164172
}
165173
};
166174
});
@@ -321,55 +329,58 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function() {
321329
}
322330
};
323331
adjustBuffer = function(rid, finalize) {
324-
var i, j, len, promises, toBePrepended, toBeRemoved, wrapper;
332+
var promises, toBePrepended, toBeRemoved;
325333
promises = [];
326334
toBePrepended = [];
327335
toBeRemoved = [];
328-
for (i = j = 0, len = buffer.length; j < len; i = ++j) {
329-
wrapper = buffer[i];
330-
switch (wrapper.op) {
331-
case 'prepend':
332-
toBePrepended.unshift(wrapper);
333-
break;
334-
case 'append':
335-
if (i === 0) {
336-
builder.insertElement(wrapper.element);
337-
} else {
338-
builder.insertElement(wrapper.element, buffer[i - 1].element);
339-
}
340-
builder.bottomPadding(Math.max(0, builder.bottomPadding() - wrapper.element.outerHeight(true)));
341-
wrapper.op = 'none';
342-
break;
343-
case 'insert':
344-
if (i === 0) {
345-
promises = promises.concat(builder.insertElementAnimated(wrapper.element));
346-
} else {
347-
promises = promises.concat(builder.insertElementAnimated(wrapper.element, buffer[i - 1].element));
348-
}
349-
builder.bottomPadding(Math.max(0, builder.bottomPadding() - wrapper.element.outerHeight(true)));
350-
wrapper.op = 'none';
351-
break;
352-
case 'remove':
353-
toBeRemoved.push(wrapper);
354-
}
355-
}
356336
return $timeout(function() {
357-
var item, itemHeight, itemTop, k, l, len1, len2, len3, len4, m, n, newHeight, newRow, rowTop, topHeight;
358-
for (k = 0, len1 = toBePrepended.length; k < len1; k++) {
359-
wrapper = toBePrepended[k];
360-
builder.insertElement(wrapper.element);
361-
newHeight = builder.topPadding() - wrapper.element.outerHeight(true);
362-
if (newHeight >= 0) {
363-
builder.topPadding(newHeight);
364-
} else {
365-
viewport.scrollTop(viewport.scrollTop() + wrapper.element.outerHeight(true));
337+
var bottomPos, heightIncrement, i, item, itemHeight, itemTop, j, k, l, len, len1, len2, len3, len4, m, n, newRow, rowTop, topHeight, wrapper;
338+
bottomPos = builder.bottomDataPos();
339+
for (i = j = 0, len = buffer.length; j < len; i = ++j) {
340+
wrapper = buffer[i];
341+
switch (wrapper.op) {
342+
case 'prepend':
343+
toBePrepended.unshift(wrapper);
344+
break;
345+
case 'append':
346+
if (i === 0) {
347+
builder.insertElement(wrapper.element);
348+
} else {
349+
builder.insertElement(wrapper.element, buffer[i - 1].element);
350+
}
351+
wrapper.op = 'none';
352+
break;
353+
case 'insert':
354+
if (i === 0) {
355+
promises = promises.concat(builder.insertElementAnimated(wrapper.element));
356+
} else {
357+
promises = promises.concat(builder.insertElementAnimated(wrapper.element, buffer[i - 1].element));
358+
}
359+
wrapper.op = 'none';
360+
break;
361+
case 'remove':
362+
toBeRemoved.push(wrapper);
366363
}
367-
wrapper.op = 'none';
368364
}
369-
for (l = 0, len2 = toBeRemoved.length; l < len2; l++) {
370-
wrapper = toBeRemoved[l];
365+
for (k = 0, len1 = toBeRemoved.length; k < len1; k++) {
366+
wrapper = toBeRemoved[k];
371367
promises = promises.concat(removeItem(wrapper));
372368
}
369+
builder.bottomPadding(Math.max(0, builder.bottomPadding() - (builder.bottomDataPos() - bottomPos)));
370+
if (toBePrepended.length) {
371+
bottomPos = builder.bottomDataPos();
372+
for (l = 0, len2 = toBePrepended.length; l < len2; l++) {
373+
wrapper = toBePrepended[l];
374+
builder.insertElement(wrapper.element);
375+
wrapper.op = 'none';
376+
}
377+
heightIncrement = builder.bottomDataPos() - bottomPos;
378+
if (builder.topPadding() >= heightIncrement) {
379+
builder.topPadding(builder.topPadding() - heightIncrement);
380+
} else {
381+
viewport.scrollTop(viewport.scrollTop() + heightIncrement);
382+
}
383+
}
373384
for (i = m = 0, len3 = buffer.length; m < len3; i = ++m) {
374385
item = buffer[i];
375386
item.scope.$index = first + i;

dist/ui-scroll.min.js

+7-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "angular-ui-scroll",
33
"description": "two way infinite scroll",
4-
"version": "1.3.0",
4+
"version": "1.3.1",
55
"src": "./src/",
66
"public": "./public/",
77
"main": "./dist/ui-scroll.js",

0 commit comments

Comments
 (0)