Skip to content

Commit 8b4ce29

Browse files
committed
πŸ›  add stagger option; πŸ‘· build v2.1.0
+ πŸ“¦ ^ dependencies + 🍹 fix .mdown in gulp version
1 parent 956f4e6 commit 8b4ce29

7 files changed

+83
-24
lines changed

β€ŽREADME.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ See [packery.metafizzy.co](http://packery.metafizzy.co) for complete docs and de
1616
Link directly to Packery files on [npmcdn](https://npmcdn.com).
1717

1818
``` html
19-
<script src="https://npmcdn.com/packery@2.0/dist/packery.pkgd.js"></script>
19+
<script src="https://npmcdn.com/packery@2.1/dist/packery.pkgd.js"></script>
2020
<!-- or -->
21-
<script src="https://npmcdn.com/packery@2.0/dist/packery.pkgd.min.js"></script>
21+
<script src="https://npmcdn.com/packery@2.1/dist/packery.pkgd.min.js"></script>
2222
```
2323

2424
### Package managers

β€Žbower.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"description": "Gapless, draggable grid layouts",
55
"main": "js/packery.js",
66
"dependencies": {
7-
"get-size": "~2.0.2",
8-
"outlayer": "~2.0.0"
7+
"get-size": "^2.0.2",
8+
"outlayer": "^2.0.0"
99
},
1010
"devDependencies": {
1111
"draggabilly": "^2.1.0",

β€Ždist/packery.pkgd.js

+71-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Packery PACKAGED v2.0.0
2+
* Packery PACKAGED v2.1.0
33
* Gapless, draggable grid layouts
44
*
55
* Licensed GPLv3 for open source use
@@ -827,7 +827,8 @@ var vendorProperties = {
827827
transform: transformProperty,
828828
transition: transitionProperty,
829829
transitionDuration: transitionProperty + 'Duration',
830-
transitionProperty: transitionProperty + 'Property'
830+
transitionProperty: transitionProperty + 'Property',
831+
transitionDelay: transitionProperty + 'Delay'
831832
};
832833

833834
// -------------------------- Item -------------------------- //
@@ -1106,10 +1107,14 @@ proto.enableTransition = function(/* style */) {
11061107
// prop = vendorProperties[ prop ] || prop;
11071108
// transitionValues.push( toDashedAll( prop ) );
11081109
// }
1110+
// munge number to millisecond, to match stagger
1111+
var duration = this.layout.options.transitionDuration;
1112+
duration = typeof duration == 'number' ? duration + 'ms' : duration;
11091113
// enable transition styles
11101114
this.css({
11111115
transitionProperty: transitionProps,
1112-
transitionDuration: this.layout.options.transitionDuration
1116+
transitionDuration: duration,
1117+
transitionDelay: this.staggerDelay || 0
11131118
});
11141119
// listen for transition end event
11151120
this.element.addEventListener( transitionEndEvent, this, false );
@@ -1183,14 +1188,22 @@ proto._removeStyles = function( style ) {
11831188

11841189
var cleanTransitionStyle = {
11851190
transitionProperty: '',
1186-
transitionDuration: ''
1191+
transitionDuration: '',
1192+
transitionDelay: ''
11871193
};
11881194

11891195
proto.removeTransitionStyles = function() {
11901196
// remove transition
11911197
this.css( cleanTransitionStyle );
11921198
};
11931199

1200+
// ----- stagger ----- //
1201+
1202+
proto.stagger = function( delay ) {
1203+
delay = isNaN( delay ) ? 0 : delay;
1204+
this.staggerDelay = delay + 'ms';
1205+
};
1206+
11941207
// ----- show/hide/remove ----- //
11951208

11961209
// remove element from DOM
@@ -1306,7 +1319,7 @@ return Item;
13061319
}));
13071320

13081321
/*!
1309-
* Outlayer v2.0.1
1322+
* Outlayer v2.1.0
13101323
* the brains and guts of a layout library
13111324
* MIT license
13121325
*/
@@ -1655,23 +1668,36 @@ proto._getItemLayoutPosition = function( /* item */ ) {
16551668
* @param {Array} queue
16561669
*/
16571670
proto._processLayoutQueue = function( queue ) {
1658-
queue.forEach( function( obj ) {
1659-
this._positionItem( obj.item, obj.x, obj.y, obj.isInstant );
1671+
this.updateStagger();
1672+
queue.forEach( function( obj, i ) {
1673+
this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );
16601674
}, this );
16611675
};
16621676

1677+
// set stagger from option in milliseconds number
1678+
proto.updateStagger = function() {
1679+
var stagger = this.options.stagger;
1680+
if ( stagger === null || stagger === undefined ) {
1681+
this.stagger = 0;
1682+
return;
1683+
}
1684+
this.stagger = getMilliseconds( stagger );
1685+
return this.stagger;
1686+
};
1687+
16631688
/**
16641689
* Sets position of item in DOM
16651690
* @param {Outlayer.Item} item
16661691
* @param {Number} x - horizontal position
16671692
* @param {Number} y - vertical position
16681693
* @param {Boolean} isInstant - disables transitions
16691694
*/
1670-
proto._positionItem = function( item, x, y, isInstant ) {
1695+
proto._positionItem = function( item, x, y, isInstant, i ) {
16711696
if ( isInstant ) {
16721697
// if not transition, just set CSS
16731698
item.goTo( x, y );
16741699
} else {
1700+
item.stagger( i * this.stagger );
16751701
item.moveTo( x, y );
16761702
}
16771703
};
@@ -2015,7 +2041,9 @@ proto.reveal = function( items ) {
20152041
if ( !items || !items.length ) {
20162042
return;
20172043
}
2018-
items.forEach( function( item ) {
2044+
var stagger = this.updateStagger();
2045+
items.forEach( function( item, i ) {
2046+
item.stagger( i * stagger );
20192047
item.reveal();
20202048
});
20212049
};
@@ -2029,7 +2057,9 @@ proto.hide = function( items ) {
20292057
if ( !items || !items.length ) {
20302058
return;
20312059
}
2032-
items.forEach( function( item ) {
2060+
var stagger = this.updateStagger();
2061+
items.forEach( function( item, i ) {
2062+
item.stagger( i * stagger );
20332063
item.hide();
20342064
});
20352065
};
@@ -2194,6 +2224,31 @@ function subclass( Parent ) {
21942224
return SubClass;
21952225
}
21962226

2227+
// ----- helpers ----- //
2228+
2229+
// how many milliseconds are in each unit
2230+
var msUnits = {
2231+
ms: 1,
2232+
s: 1000
2233+
};
2234+
2235+
// munge time-like parameter into millisecond number
2236+
// '0.4s' -> 40
2237+
function getMilliseconds( time ) {
2238+
if ( typeof time == 'number' ) {
2239+
return time;
2240+
}
2241+
var matches = time.match( /(^\d*\.?\d*)(\w*)/ );
2242+
var num = matches && matches[1];
2243+
var unit = matches && matches[2];
2244+
if ( !num.length ) {
2245+
return 0;
2246+
}
2247+
num = parseFloat( num );
2248+
var mult = msUnits[ unit ] || 1;
2249+
return num * mult;
2250+
}
2251+
21972252
// ----- fin ----- //
21982253

21992254
// back in global
@@ -2672,7 +2727,11 @@ proto.positionDropPlaceholder = function() {
26722727
};
26732728

26742729
proto.hideDropPlaceholder = function() {
2675-
this.layout.element.removeChild( this.dropPlaceholder );
2730+
// only remove once, #333
2731+
var parent = this.dropPlaceholder.parentNode;
2732+
if ( parent ) {
2733+
parent.removeChild( this.dropPlaceholder );
2734+
}
26762735
};
26772736

26782737
// ----- ----- //
@@ -2682,7 +2741,7 @@ return Item;
26822741
}));
26832742

26842743
/*!
2685-
* Packery v2.0.0
2744+
* Packery v2.1.0
26862745
* Gapless, draggable grid layouts
26872746
*
26882747
* Licensed GPLv3 for open source use

β€Ždist/packery.pkgd.min.js

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

β€Žgulpfile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ gulp.task( 'version', function() {
122122
.pipe( gulp.dest('.') );
123123
// replace CDN links in README
124124
var minorVersion = version.match( /^\d\.\d+/ )[0];
125-
gulp.src('README.mdown')
125+
gulp.src('README.md')
126126
.pipe( replace( /packery@\d\.\d+/g, 'packery@' + minorVersion ))
127127
.pipe( gulp.dest('.') );
128128
});

β€Žjs/packery.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Packery v2.0.0
2+
* Packery v2.1.0
33
* Gapless, draggable grid layouts
44
*
55
* Licensed GPLv3 for open source use

β€Žpackage.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "packery",
3-
"version": "2.0.0",
3+
"version": "2.1.0",
44
"description": "Gapless, draggable grid layouts",
55
"main": "js/packery.js",
66
"dependencies": {
7-
"get-size": "~2.0.2",
8-
"outlayer": "~2.0.0"
7+
"get-size": "^2.0.2",
8+
"outlayer": "^2.0.0"
99
},
1010
"devDependencies": {
1111
"chalk": "^1.1.1",

0 commit comments

Comments
Β (0)