diff options
Diffstat (limited to 'source/bower_components/foundation/js/foundation/foundation.equalizer.js')
-rw-r--r-- | source/bower_components/foundation/js/foundation/foundation.equalizer.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/source/bower_components/foundation/js/foundation/foundation.equalizer.js b/source/bower_components/foundation/js/foundation/foundation.equalizer.js new file mode 100644 index 0000000..7106272 --- /dev/null +++ b/source/bower_components/foundation/js/foundation/foundation.equalizer.js @@ -0,0 +1,74 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.equalizer = { + name : 'equalizer', + + version : '5.4.3', + + settings : { + use_tallest: true, + before_height_change: $.noop, + after_height_change: $.noop, + equalize_on_stack: false + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'image_loaded'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){ + this.reflow(); + }.bind(this)); + }, + + equalize: function(equalizer) { + var isStacked = false, + vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'), + settings = equalizer.data(this.attr_name(true)+'-init'); + + if (vals.length === 0) return; + var firstTopOffset = vals.first().offset().top; + settings.before_height_change(); + equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer'); + vals.height('inherit'); + vals.each(function(){ + var el = $(this); + if (el.offset().top !== firstTopOffset) { + isStacked = true; + } + }); + + if (settings.equalize_on_stack === false) { + if (isStacked) return; + }; + + var heights = vals.map(function(){ return $(this).outerHeight(false) }).get(); + + if (settings.use_tallest) { + var max = Math.max.apply(null, heights); + vals.css('height', max); + } else { + var min = Math.min.apply(null, heights); + vals.css('height', min); + } + settings.after_height_change(); + equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer'); + }, + + reflow : function () { + var self = this; + + this.S('[' + this.attr_name() + ']', this.scope).each(function(){ + var $eq_target = $(this); + self.image_loaded(self.S('img', this), function(){ + self.equalize($eq_target) + }); + }); + } + }; +})(jQuery, window, window.document); + |