mirror of
				https://github.com/Hutchy68/pivot.git
				synced 2025-11-04 02:57:35 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
;(function ($, window, document, undefined) {
 | 
						|
  'use strict';
 | 
						|
 | 
						|
  Foundation.libs.equalizer = {
 | 
						|
    name : 'equalizer',
 | 
						|
 | 
						|
    version : '5.5.3master',
 | 
						|
 | 
						|
    settings : {
 | 
						|
      use_tallest : true,
 | 
						|
      before_height_change : $.noop,
 | 
						|
      after_height_change : $.noop,
 | 
						|
      equalize_on_stack : false,
 | 
						|
      act_on_hidden_el: 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,
 | 
						|
          group = equalizer.data('equalizer'),
 | 
						|
          settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
 | 
						|
          vals,
 | 
						|
          firstTopOffset;
 | 
						|
 | 
						|
      if (settings.act_on_hidden_el) {
 | 
						|
        vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
 | 
						|
      }
 | 
						|
      else {
 | 
						|
        vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
 | 
						|
      }
 | 
						|
      
 | 
						|
      if (vals.length === 0) {
 | 
						|
        return;
 | 
						|
      }
 | 
						|
 | 
						|
      settings.before_height_change();
 | 
						|
      equalizer.trigger('before-height-change.fndth.equalizer');
 | 
						|
      vals.height('inherit');
 | 
						|
 | 
						|
      if (settings.equalize_on_stack === false) {
 | 
						|
        firstTopOffset = vals.first().offset().top;
 | 
						|
        vals.each(function () {
 | 
						|
          if ($(this).offset().top !== firstTopOffset) {
 | 
						|
            isStacked = true;
 | 
						|
            return 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.fndtn.equalizer');
 | 
						|
    },
 | 
						|
 | 
						|
    reflow : function () {
 | 
						|
      var self = this;
 | 
						|
 | 
						|
      this.S('[' + this.attr_name() + ']', this.scope).each(function () {
 | 
						|
        var $eq_target = $(this),
 | 
						|
            media_query = $eq_target.data('equalizer-mq'),
 | 
						|
            ignore_media_query = true;
 | 
						|
 | 
						|
        if (media_query) {
 | 
						|
          media_query = 'is_' + media_query.replace(/-/g, '_');
 | 
						|
          if (Foundation.utils.hasOwnProperty(media_query)) {
 | 
						|
            ignore_media_query = false;
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        self.image_loaded(self.S('img', this), function () {
 | 
						|
          if (ignore_media_query || Foundation.utils[media_query]()) {
 | 
						|
            self.equalize($eq_target)
 | 
						|
          } else {
 | 
						|
            var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
 | 
						|
            vals.css('height', 'auto');
 | 
						|
          }
 | 
						|
        });
 | 
						|
      });
 | 
						|
    }
 | 
						|
  };
 | 
						|
})(jQuery, window, window.document);
 |