mirror of https://github.com/metafizzy/isotope
Filter & sort magical layouts
http://isotope.metafizzy.co
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.7 KiB
76 lines
1.7 KiB
/** |
|
* Isotope Item |
|
**/ |
|
|
|
( function( window, factory ) { |
|
'use strict'; |
|
// universal module definition |
|
if ( typeof define == 'function' && define.amd ) { |
|
// AMD |
|
define( [ |
|
'outlayer/outlayer' |
|
], |
|
factory ); |
|
} else if ( typeof exports == 'object' ) { |
|
// CommonJS |
|
module.exports = factory( |
|
require('outlayer') |
|
); |
|
} else { |
|
// browser global |
|
window.Isotope = window.Isotope || {}; |
|
window.Isotope.Item = factory( |
|
window.Outlayer |
|
); |
|
} |
|
|
|
}( window, function factory( Outlayer ) { |
|
'use strict'; |
|
|
|
// -------------------------- Item -------------------------- // |
|
|
|
// sub-class Outlayer Item |
|
function Item() { |
|
Outlayer.Item.apply( this, arguments ); |
|
} |
|
|
|
Item.prototype = new Outlayer.Item(); |
|
|
|
Item.prototype._create = function() { |
|
// assign id, used for original-order sorting |
|
this.id = this.layout.itemGUID++; |
|
Outlayer.Item.prototype._create.call( this ); |
|
this.sortData = {}; |
|
}; |
|
|
|
Item.prototype.updateSortData = function() { |
|
if ( this.isIgnored ) { |
|
return; |
|
} |
|
// default sorters |
|
this.sortData.id = this.id; |
|
// for backward compatibility |
|
this.sortData['original-order'] = this.id; |
|
this.sortData.random = Math.random(); |
|
// go thru getSortData obj and apply the sorters |
|
var getSortData = this.layout.options.getSortData; |
|
var sorters = this.layout._sorters; |
|
for ( var key in getSortData ) { |
|
var sorter = sorters[ key ]; |
|
this.sortData[ key ] = sorter( this.element, this ); |
|
} |
|
}; |
|
|
|
var _destroy = Item.prototype.destroy; |
|
Item.prototype.destroy = function() { |
|
// call super |
|
_destroy.apply( this, arguments ); |
|
// reset display, #741 |
|
this.css({ |
|
display: '' |
|
}); |
|
}; |
|
|
|
return Item; |
|
|
|
}));
|
|
|