Mercurial > web-octave
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 |
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); |