annotate js/foundation/foundation.equalizer.js @ 0:7abe02bf29ec

initial commit
author Alex Krolick <whokilledtheelectricmonk@gmail.com>
date Sat, 07 Nov 2015 18:04:42 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
1 ;(function ($, window, document, undefined) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
2 'use strict';
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
3
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
4 Foundation.libs.equalizer = {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
5 name : 'equalizer',
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
6
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
7 version : '5.5.3',
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
8
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
9 settings : {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
10 use_tallest : true,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
11 before_height_change : $.noop,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
12 after_height_change : $.noop,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
13 equalize_on_stack : false,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
14 act_on_hidden_el: false
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
15 },
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
16
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
17 init : function (scope, method, options) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
18 Foundation.inherit(this, 'image_loaded');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
19 this.bindings(method, options);
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
20 this.reflow();
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
21 },
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
22
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
23 events : function () {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
24 this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
25 this.reflow();
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
26 }.bind(this));
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
27 },
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
28
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
29 equalize : function (equalizer) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
30 var isStacked = false,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
31 group = equalizer.data('equalizer'),
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
32 settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
33 vals,
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
34 firstTopOffset;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
35
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
36 if (settings.act_on_hidden_el) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
37 vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
38 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
39 else {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
40 vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
41 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
42
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
43 if (vals.length === 0) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
44 return;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
45 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
46
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
47 settings.before_height_change();
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
48 equalizer.trigger('before-height-change.fndth.equalizer');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
49 vals.height('inherit');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
50
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
51 if (settings.equalize_on_stack === false) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
52 firstTopOffset = vals.first().offset().top;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
53 vals.each(function () {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
54 if ($(this).offset().top !== firstTopOffset) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
55 isStacked = true;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
56 return false;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
57 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
58 });
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
59 if (isStacked) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
60 return;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
61 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
62 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
63
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
64 var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
65
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
66 if (settings.use_tallest) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
67 var max = Math.max.apply(null, heights);
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
68 vals.css('height', max);
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
69 } else {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
70 var min = Math.min.apply(null, heights);
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
71 vals.css('height', min);
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
72 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
73
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
74 settings.after_height_change();
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
75 equalizer.trigger('after-height-change.fndtn.equalizer');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
76 },
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
77
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
78 reflow : function () {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
79 var self = this;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
80
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
81 this.S('[' + this.attr_name() + ']', this.scope).each(function () {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
82 var $eq_target = $(this),
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
83 media_query = $eq_target.data('equalizer-mq'),
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
84 ignore_media_query = true;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
85
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
86 if (media_query) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
87 media_query = 'is_' + media_query.replace(/-/g, '_');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
88 if (Foundation.utils.hasOwnProperty(media_query)) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
89 ignore_media_query = false;
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
90 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
91 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
92
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
93 self.image_loaded(self.S('img', this), function () {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
94 if (ignore_media_query || Foundation.utils[media_query]()) {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
95 self.equalize($eq_target)
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
96 } else {
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
97 var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
98 vals.css('height', 'auto');
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
99 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
100 });
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
101 });
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
102 }
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
103 };
7abe02bf29ec initial commit
Alex Krolick <whokilledtheelectricmonk@gmail.com>
parents:
diff changeset
104 })(jQuery, window, window.document);