paint-rails 0.6.7 → 0.7.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -4
  3. data/lib/paint-rails/version.rb +1 -1
  4. data/paint-rails.gemspec +2 -2
  5. data/vendor/assets/stylesheets/Brocfile.js +3 -0
  6. data/vendor/assets/stylesheets/Gemfile +3 -0
  7. data/vendor/assets/stylesheets/Gemfile.lock +14 -0
  8. data/vendor/assets/stylesheets/bin/ci +6 -0
  9. data/vendor/assets/stylesheets/bin/lint +5 -0
  10. data/vendor/assets/stylesheets/bin/setup +7 -0
  11. data/vendor/assets/stylesheets/bower_components/fontawesome/.bower.json +5 -5
  12. data/vendor/assets/stylesheets/bower_components/fontawesome/.gitignore +1 -0
  13. data/vendor/assets/stylesheets/bower_components/fontawesome/bower.json +1 -1
  14. data/vendor/assets/stylesheets/bower_components/fontawesome/css/font-awesome.css +133 -4
  15. data/vendor/assets/stylesheets/bower_components/fontawesome/css/font-awesome.css.map +7 -0
  16. data/vendor/assets/stylesheets/bower_components/fontawesome/css/font-awesome.min.css +2 -2
  17. data/vendor/assets/stylesheets/bower_components/fontawesome/fonts/FontAwesome.otf +0 -0
  18. data/vendor/assets/stylesheets/bower_components/fontawesome/fonts/fontawesome-webfont.eot +0 -0
  19. data/vendor/assets/stylesheets/bower_components/fontawesome/fonts/fontawesome-webfont.svg +53 -8
  20. data/vendor/assets/stylesheets/bower_components/fontawesome/fonts/fontawesome-webfont.ttf +0 -0
  21. data/vendor/assets/stylesheets/bower_components/fontawesome/fonts/fontawesome-webfont.woff +0 -0
  22. data/vendor/assets/stylesheets/bower_components/fontawesome/fonts/fontawesome-webfont.woff2 +0 -0
  23. data/vendor/assets/stylesheets/bower_components/fontawesome/less/{spinning.less → animated.less} +6 -1
  24. data/vendor/assets/stylesheets/bower_components/fontawesome/less/core.less +3 -1
  25. data/vendor/assets/stylesheets/bower_components/fontawesome/less/font-awesome.less +2 -2
  26. data/vendor/assets/stylesheets/bower_components/fontawesome/less/icons.less +45 -1
  27. data/vendor/assets/stylesheets/bower_components/fontawesome/less/mixins.less +3 -1
  28. data/vendor/assets/stylesheets/bower_components/fontawesome/less/path.less +1 -0
  29. data/vendor/assets/stylesheets/bower_components/fontawesome/less/variables.less +47 -2
  30. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/{_spinning.scss → _animated.scss} +5 -0
  31. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/_core.scss +3 -1
  32. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/_icons.scss +45 -1
  33. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/_mixins.scss +3 -1
  34. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/_path.scss +2 -1
  35. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/_variables.scss +47 -2
  36. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/font-awesome.scss +2 -2
  37. data/vendor/assets/stylesheets/bower_components/foundation/.bower.json +5 -5
  38. data/vendor/assets/stylesheets/bower_components/foundation/bower.json +1 -1
  39. data/vendor/assets/stylesheets/bower_components/foundation/css/foundation.css +1855 -1667
  40. data/vendor/assets/stylesheets/bower_components/foundation/css/foundation.css.map +7 -0
  41. data/vendor/assets/stylesheets/bower_components/foundation/css/foundation.min.css +1 -0
  42. data/vendor/assets/stylesheets/bower_components/foundation/css/normalize.css +11 -12
  43. data/vendor/assets/stylesheets/bower_components/foundation/css/normalize.css.map +7 -0
  44. data/vendor/assets/stylesheets/bower_components/foundation/css/normalize.min.css +1 -0
  45. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.abide.js +156 -62
  46. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.accordion.js +35 -13
  47. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.alert.js +8 -8
  48. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.clearing.js +93 -65
  49. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.dropdown.js +203 -66
  50. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.equalizer.js +57 -27
  51. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.interchange.js +61 -46
  52. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.joyride.js +93 -78
  53. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.js +177 -77
  54. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.magellan.js +81 -55
  55. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.offcanvas.js +28 -28
  56. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.orbit.js +135 -131
  57. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.reveal.js +119 -65
  58. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.slider.js +113 -71
  59. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.tab.js +67 -35
  60. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.tooltip.js +76 -37
  61. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation/foundation.topbar.js +71 -58
  62. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation.js +1570 -919
  63. data/vendor/assets/stylesheets/bower_components/foundation/js/foundation.min.js +5 -4
  64. data/vendor/assets/stylesheets/bower_components/foundation/js/vendor/fastclick.js +8 -9
  65. data/vendor/assets/stylesheets/bower_components/foundation/js/vendor/jquery.js +10 -9
  66. data/vendor/assets/stylesheets/bower_components/foundation/js/vendor/modernizr.js +1 -1
  67. data/vendor/assets/stylesheets/bower_components/foundation/js/vendor/placeholder.js +2 -2
  68. data/vendor/assets/stylesheets/bower_components/foundation/package.json +53 -0
  69. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/_functions.scss +76 -22
  70. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/_settings.scss +152 -107
  71. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_accordion.scss +8 -8
  72. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_alert-boxes.scss +12 -12
  73. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_block-grid.scss +14 -13
  74. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_breadcrumbs.scss +18 -19
  75. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_button-groups.scss +35 -25
  76. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_buttons.scss +16 -19
  77. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_clearing.scss +60 -47
  78. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_dropdown-buttons.scss +15 -15
  79. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_dropdown.scss +42 -36
  80. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_flex-video.scss +7 -7
  81. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_forms.scss +103 -79
  82. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_global.scss +95 -53
  83. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_grid.scss +42 -25
  84. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_icon-bar.scss +371 -204
  85. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_inline-lists.scss +8 -8
  86. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_joyride.scss +40 -42
  87. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_keystrokes.scss +2 -3
  88. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_labels.scss +7 -7
  89. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_magellan.scss +2 -2
  90. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_offcanvas.scss +184 -179
  91. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_orbit.scss +90 -70
  92. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_pagination.scss +15 -15
  93. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_panels.scss +27 -15
  94. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_pricing-tables.scss +16 -16
  95. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_progress-bars.scss +4 -4
  96. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_range-slider.scss +28 -19
  97. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_reveal.scss +37 -50
  98. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_side-nav.scss +15 -11
  99. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_split-buttons.scss +26 -14
  100. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_sub-nav.scss +14 -12
  101. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_switches.scss +32 -21
  102. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_tables.scss +8 -8
  103. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_tabs.scss +50 -31
  104. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_thumbs.scss +8 -8
  105. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_tooltips.scss +25 -25
  106. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_top-bar.scss +197 -145
  107. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_type.scss +20 -81
  108. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_visibility.scss +99 -15
  109. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation.scss +37 -38
  110. data/vendor/assets/stylesheets/bower_components/foundation/scss/normalize.scss +8 -11
  111. data/vendor/assets/stylesheets/bower_components/jquery/.bower.json +5 -4
  112. data/vendor/assets/stylesheets/bower_components/jquery/bower.json +2 -1
  113. data/vendor/assets/stylesheets/bower_components/jquery/dist/jquery.js +9 -4
  114. data/vendor/assets/stylesheets/bower_components/jquery/dist/jquery.min.js +4 -4
  115. data/vendor/assets/stylesheets/bower_components/jquery/dist/jquery.min.map +1 -1
  116. data/vendor/assets/stylesheets/bower_components/jquery/src/core.js +6 -1
  117. data/vendor/assets/stylesheets/circle.yml +17 -0
  118. data/vendor/assets/stylesheets/components/_button.scss +120 -21
  119. data/vendor/assets/stylesheets/components/_dropdown.scss +316 -14
  120. data/vendor/assets/stylesheets/components/_flip-panel.scss +191 -0
  121. data/vendor/assets/stylesheets/components/_form.scss +346 -0
  122. data/vendor/assets/stylesheets/components/_layout.scss +261 -121
  123. data/vendor/assets/stylesheets/components/_panel.scss +91 -0
  124. data/vendor/assets/stylesheets/components/_quick-jump.scss +267 -0
  125. data/vendor/assets/stylesheets/components/_side-panel.scss +154 -0
  126. data/vendor/assets/stylesheets/components/_table.scss +105 -0
  127. data/vendor/assets/stylesheets/components/_typography.scss +34 -3
  128. data/vendor/assets/stylesheets/components/_vertical-align.scss +9 -0
  129. data/vendor/assets/stylesheets/globals/_functions.scss +69 -0
  130. data/vendor/assets/stylesheets/globals/_mixins.scss +23 -1
  131. data/vendor/assets/stylesheets/globals/_settings.scss +35 -36
  132. data/vendor/assets/stylesheets/paint.scss +22 -14
  133. metadata +29 -8
  134. data/vendor/assets/stylesheets/bower_components/fontawesome/less/extras.less +0 -2
  135. data/vendor/assets/stylesheets/bower_components/fontawesome/scss/_extras.scss +0 -44
  136. data/vendor/assets/stylesheets/bower_components/foundation/scss/foundation/components/_toolbar.scss +0 -70
@@ -4,21 +4,23 @@
4
4
  Foundation.libs.dropdown = {
5
5
  name : 'dropdown',
6
6
 
7
- version : '5.4.7',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
- active_class: 'open',
11
- disabled_class: 'disabled',
12
- mega_class: 'mega',
13
- align: 'bottom',
14
- is_hover: false,
15
- opened: function(){},
16
- closed: function(){}
10
+ active_class : 'open',
11
+ disabled_class : 'disabled',
12
+ mega_class : 'mega',
13
+ align : 'bottom',
14
+ is_hover : false,
15
+ hover_timeout : 150,
16
+ opened : function () {},
17
+ closed : function () {}
17
18
  },
18
19
 
19
20
  init : function (scope, method, options) {
20
21
  Foundation.inherit(this, 'throttle');
21
22
 
23
+ $.extend(true, this.settings, method, options);
22
24
  this.bindings(method, options);
23
25
  },
24
26
 
@@ -32,6 +34,9 @@
32
34
  var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
33
35
  if (!settings.is_hover || Modernizr.touch) {
34
36
  e.preventDefault();
37
+ if (S(this).parent('[data-reveal-id]').length) {
38
+ e.stopPropagation();
39
+ }
35
40
  self.toggle($(this));
36
41
  }
37
42
  })
@@ -47,36 +52,58 @@
47
52
  target = $this;
48
53
  } else {
49
54
  dropdown = $this;
50
- target = S("[" + self.attr_name() + "='" + dropdown.attr('id') + "']");
55
+ target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
51
56
  }
52
57
 
53
58
  var settings = target.data(self.attr_name(true) + '-init') || self.settings;
54
59
 
55
- if(S(e.target).data(self.data_attr()) && settings.is_hover) {
60
+ if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
56
61
  self.closeall.call(self);
57
62
  }
58
63
 
59
- if (settings.is_hover) self.open.apply(self, [dropdown, target]);
64
+ if (settings.is_hover) {
65
+ self.open.apply(self, [dropdown, target]);
66
+ }
60
67
  })
61
68
  .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
62
69
  var $this = S(this);
70
+ var settings;
71
+
72
+ if ($this.data(self.data_attr())) {
73
+ settings = $this.data(self.data_attr(true) + '-init') || self.settings;
74
+ } else {
75
+ var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
76
+ settings = target.data(self.attr_name(true) + '-init') || self.settings;
77
+ }
78
+
63
79
  self.timeout = setTimeout(function () {
64
80
  if ($this.data(self.data_attr())) {
65
- var settings = $this.data(self.data_attr(true) + '-init') || self.settings;
66
- if (settings.is_hover) self.close.call(self, S('#' + $this.data(self.data_attr())));
81
+ if (settings.is_hover) {
82
+ self.close.call(self, S('#' + $this.data(self.data_attr())));
83
+ }
67
84
  } else {
68
- var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
69
- settings = target.data(self.attr_name(true) + '-init') || self.settings;
70
- if (settings.is_hover) self.close.call(self, $this);
85
+ if (settings.is_hover) {
86
+ self.close.call(self, $this);
87
+ }
71
88
  }
72
- }.bind(this), 150);
89
+ }.bind(this), settings.hover_timeout);
73
90
  })
74
91
  .on('click.fndtn.dropdown', function (e) {
75
92
  var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
93
+ var links = parent.find('a');
94
+
95
+ if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
96
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
97
+ }
98
+
99
+ if (e.target !== document && !$.contains(document.documentElement, e.target)) {
100
+ return;
101
+ }
76
102
 
77
103
  if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
78
104
  return;
79
105
  }
106
+
80
107
  if (!(S(e.target).data('revealId')) &&
81
108
  (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
82
109
  $.contains(parent.first()[0], e.target)))) {
@@ -87,10 +114,10 @@
87
114
  self.close.call(self, S('[' + self.attr_name() + '-content]'));
88
115
  })
89
116
  .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
90
- self.settings.opened.call(this);
117
+ self.settings.opened.call(this);
91
118
  })
92
119
  .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
93
- self.settings.closed.call(this);
120
+ self.settings.closed.call(this);
94
121
  });
95
122
 
96
123
  S(window)
@@ -102,44 +129,46 @@
102
129
  this.resize();
103
130
  },
104
131
 
105
- close: function (dropdown) {
132
+ close : function (dropdown) {
106
133
  var self = this;
107
- dropdown.each(function () {
108
- var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id+ ']');
109
- original_target.attr('aria-expanded', "false");
134
+ dropdown.each(function (idx) {
135
+ var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']');
136
+ original_target.attr('aria-expanded', 'false');
110
137
  if (self.S(this).hasClass(self.settings.active_class)) {
111
138
  self.S(this)
112
- .css(Foundation.rtl ? 'right':'left', '-99999px')
113
- .attr('aria-hidden', "true")
139
+ .css(Foundation.rtl ? 'right' : 'left', '-99999px')
140
+ .attr('aria-hidden', 'true')
114
141
  .removeClass(self.settings.active_class)
115
142
  .prev('[' + self.attr_name() + ']')
116
143
  .removeClass(self.settings.active_class)
117
144
  .removeData('target');
118
145
 
119
- self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);
146
+ self.S(this).trigger('closed.fndtn.dropdown', [dropdown]);
120
147
  }
121
148
  });
149
+ dropdown.removeClass('f-open-' + this.attr_name(true));
122
150
  },
123
151
 
124
- closeall: function() {
152
+ closeall : function () {
125
153
  var self = this;
126
- $.each(self.S('[' + this.attr_name() + '-content]'), function() {
154
+ $.each(self.S('.f-open-' + this.attr_name(true)), function () {
127
155
  self.close.call(self, self.S(this));
128
156
  });
129
157
  },
130
158
 
131
- open: function (dropdown, target) {
132
- this
133
- .css(dropdown
134
- .addClass(this.settings.active_class), target);
135
- dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
136
- dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);
137
- dropdown.attr('aria-hidden', 'false');
138
- target.attr('aria-expanded', 'true');
139
- dropdown.focus();
159
+ open : function (dropdown, target) {
160
+ this
161
+ .css(dropdown
162
+ .addClass(this.settings.active_class), target);
163
+ dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
164
+ dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]);
165
+ dropdown.attr('aria-hidden', 'false');
166
+ target.attr('aria-expanded', 'true');
167
+ dropdown.focus();
168
+ dropdown.addClass('f-open-' + this.attr_name(true));
140
169
  },
141
170
 
142
- data_attr: function () {
171
+ data_attr : function () {
143
172
  if (this.namespace.length > 0) {
144
173
  return this.namespace + '-' + this.name;
145
174
  }
@@ -161,16 +190,17 @@
161
190
 
162
191
  if (dropdown.hasClass(this.settings.active_class)) {
163
192
  this.close.call(this, dropdown);
164
- if (dropdown.data('target') !== target.get(0))
193
+ if (dropdown.data('target') !== target.get(0)) {
165
194
  this.open.call(this, dropdown, target);
195
+ }
166
196
  } else {
167
197
  this.open.call(this, dropdown, target);
168
198
  }
169
199
  },
170
200
 
171
201
  resize : function () {
172
- var dropdown = this.S('[' + this.attr_name() + '-content].open'),
173
- target = this.S("[" + this.attr_name() + "='" + dropdown.attr('id') + "']");
202
+ var dropdown = this.S('[' + this.attr_name() + '-content].open');
203
+ var target = $(dropdown.data("target"));
174
204
 
175
205
  if (dropdown.length && target.length) {
176
206
  this.css(dropdown, target);
@@ -179,22 +209,37 @@
179
209
 
180
210
  css : function (dropdown, target) {
181
211
  var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
182
- settings = target.data(this.attr_name(true) + '-init') || this.settings;
212
+ settings = target.data(this.attr_name(true) + '-init') || this.settings,
213
+ parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow');
183
214
 
184
215
  this.clear_idx();
185
216
 
217
+
218
+
186
219
  if (this.small()) {
187
220
  var p = this.dirs.bottom.call(dropdown, target, settings);
188
221
 
189
222
  dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
190
223
  position : 'absolute',
191
- width: '95%',
192
- 'max-width': 'none',
193
- top: p.top
224
+ width : '95%',
225
+ 'max-width' : 'none',
226
+ top : p.top
194
227
  });
195
228
 
196
- dropdown.css(Foundation.rtl ? 'right':'left', left_offset);
197
- } else {
229
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
230
+ }
231
+ // detect if dropdown is in an overflow container
232
+ else if (parentOverflow !== 'visible') {
233
+ var offset = target[0].offsetTop + target[0].offsetHeight;
234
+
235
+ dropdown.attr('style', '').css({
236
+ position : 'absolute',
237
+ top : offset
238
+ });
239
+
240
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
241
+ }
242
+ else {
198
243
 
199
244
  this.style(dropdown, target, settings);
200
245
  }
@@ -203,7 +248,7 @@
203
248
  },
204
249
 
205
250
  style : function (dropdown, target, settings) {
206
- var css = $.extend({position: 'absolute'},
251
+ var css = $.extend({position : 'absolute'},
207
252
  this.dirs[settings.align].call(dropdown, target, settings));
208
253
 
209
254
  dropdown.attr('style', '').css(css);
@@ -221,74 +266,166 @@
221
266
  p.top -= o.top;
222
267
  p.left -= o.left;
223
268
 
269
+ //set some flags on the p object to pass along
270
+ p.missRight = false;
271
+ p.missTop = false;
272
+ p.missLeft = false;
273
+ p.leftRightFlag = false;
274
+
275
+ //lets see if the panel will be off the screen
276
+ //get the actual width of the page and store it
277
+ var actualBodyWidth;
278
+ if (document.getElementsByClassName('row')[0]) {
279
+ actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
280
+ } else {
281
+ actualBodyWidth = window.innerWidth;
282
+ }
283
+
284
+ var actualMarginWidth = (window.innerWidth - actualBodyWidth) / 2;
285
+ var actualBoundary = actualBodyWidth;
286
+
287
+ if (!this.hasClass('mega')) {
288
+ //miss top
289
+ if (t.offset().top <= this.outerHeight()) {
290
+ p.missTop = true;
291
+ actualBoundary = window.innerWidth - actualMarginWidth;
292
+ p.leftRightFlag = true;
293
+ }
294
+
295
+ //miss right
296
+ if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {
297
+ p.missRight = true;
298
+ p.missLeft = false;
299
+ }
300
+
301
+ //miss left
302
+ if (t.offset().left - this.outerWidth() <= 0) {
303
+ p.missLeft = true;
304
+ p.missRight = false;
305
+ }
306
+ }
307
+
224
308
  return p;
225
309
  },
226
- top: function (t, s) {
310
+
311
+ top : function (t, s) {
227
312
  var self = Foundation.libs.dropdown,
228
313
  p = self.dirs._base.call(this, t);
229
314
 
230
315
  this.addClass('drop-top');
231
316
 
317
+ if (p.missTop == true) {
318
+ p.top = p.top + t.outerHeight() + this.outerHeight();
319
+ this.removeClass('drop-top');
320
+ }
321
+
322
+ if (p.missRight == true) {
323
+ p.left = p.left - this.outerWidth() + t.outerWidth();
324
+ }
325
+
232
326
  if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
233
- self.adjust_pip(this,t,s,p);
327
+ self.adjust_pip(this, t, s, p);
234
328
  }
235
329
 
236
330
  if (Foundation.rtl) {
237
- return {left: p.left - this.outerWidth() + t.outerWidth(),
238
- top: p.top - this.outerHeight()};
331
+ return {left : p.left - this.outerWidth() + t.outerWidth(),
332
+ top : p.top - this.outerHeight()};
239
333
  }
240
334
 
241
- return {left: p.left, top: p.top - this.outerHeight()};
335
+ return {left : p.left, top : p.top - this.outerHeight()};
242
336
  },
243
- bottom: function (t,s) {
337
+
338
+ bottom : function (t, s) {
244
339
  var self = Foundation.libs.dropdown,
245
340
  p = self.dirs._base.call(this, t);
246
341
 
342
+ if (p.missRight == true) {
343
+ p.left = p.left - this.outerWidth() + t.outerWidth();
344
+ }
345
+
247
346
  if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
248
- self.adjust_pip(this,t,s,p);
347
+ self.adjust_pip(this, t, s, p);
249
348
  }
250
349
 
251
350
  if (self.rtl) {
252
- return {left: p.left - this.outerWidth() + t.outerWidth(), top: p.top + t.outerHeight()};
351
+ return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
253
352
  }
254
353
 
255
- return {left: p.left, top: p.top + t.outerHeight()};
354
+ return {left : p.left, top : p.top + t.outerHeight()};
256
355
  },
257
- left: function (t, s) {
356
+
357
+ left : function (t, s) {
258
358
  var p = Foundation.libs.dropdown.dirs._base.call(this, t);
259
359
 
260
360
  this.addClass('drop-left');
261
361
 
262
- return {left: p.left - this.outerWidth(), top: p.top};
362
+ if (p.missLeft == true) {
363
+ p.left = p.left + this.outerWidth();
364
+ p.top = p.top + t.outerHeight();
365
+ this.removeClass('drop-left');
366
+ }
367
+
368
+ return {left : p.left - this.outerWidth(), top : p.top};
263
369
  },
264
- right: function (t, s) {
370
+
371
+ right : function (t, s) {
265
372
  var p = Foundation.libs.dropdown.dirs._base.call(this, t);
266
373
 
267
374
  this.addClass('drop-right');
268
375
 
269
- return {left: p.left + t.outerWidth(), top: p.top};
376
+ if (p.missRight == true) {
377
+ p.left = p.left - this.outerWidth();
378
+ p.top = p.top + t.outerHeight();
379
+ this.removeClass('drop-right');
380
+ } else {
381
+ p.triggeredRight = true;
382
+ }
383
+
384
+ var self = Foundation.libs.dropdown;
385
+
386
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
387
+ self.adjust_pip(this, t, s, p);
388
+ }
389
+
390
+ return {left : p.left + t.outerWidth(), top : p.top};
270
391
  }
271
392
  },
272
393
 
273
394
  // Insert rule to style psuedo elements
274
- adjust_pip : function (dropdown,target,settings,position) {
395
+ adjust_pip : function (dropdown, target, settings, position) {
275
396
  var sheet = Foundation.stylesheet,
276
397
  pip_offset_base = 8;
277
398
 
278
399
  if (dropdown.hasClass(settings.mega_class)) {
279
- pip_offset_base = position.left + (target.outerWidth()/2) - 8;
280
- }
281
- else if (this.small()) {
400
+ pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
401
+ } else if (this.small()) {
282
402
  pip_offset_base += position.left - 8;
283
403
  }
284
404
 
285
405
  this.rule_idx = sheet.cssRules.length;
286
406
 
407
+ //default
287
408
  var sel_before = '.f-dropdown.open:before',
288
409
  sel_after = '.f-dropdown.open:after',
289
410
  css_before = 'left: ' + pip_offset_base + 'px;',
290
411
  css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
291
412
 
413
+ if (position.missRight == true) {
414
+ pip_offset_base = dropdown.outerWidth() - 23;
415
+ sel_before = '.f-dropdown.open:before',
416
+ sel_after = '.f-dropdown.open:after',
417
+ css_before = 'left: ' + pip_offset_base + 'px;',
418
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
419
+ }
420
+
421
+ //just a case where right is fired, but its not missing right
422
+ if (position.triggeredRight == true) {
423
+ sel_before = '.f-dropdown.open:before',
424
+ sel_after = '.f-dropdown.open:after',
425
+ css_before = 'left:-12px;',
426
+ css_after = 'left:-14px;';
427
+ }
428
+
292
429
  if (sheet.insertRule) {
293
430
  sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
294
431
  sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
@@ -314,7 +451,7 @@
314
451
  !matchMedia(Foundation.media_queries.medium).matches;
315
452
  },
316
453
 
317
- off: function () {
454
+ off : function () {
318
455
  this.S(this.scope).off('.fndtn.dropdown');
319
456
  this.S('html, body').off('.fndtn.dropdown');
320
457
  this.S(window).off('.fndtn.dropdown');
@@ -4,13 +4,14 @@
4
4
  Foundation.libs.equalizer = {
5
5
  name : 'equalizer',
6
6
 
7
- version : '5.4.7',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
- use_tallest: true,
11
- before_height_change: $.noop,
12
- after_height_change: $.noop,
13
- equalize_on_stack: false
10
+ use_tallest : true,
11
+ before_height_change : $.noop,
12
+ after_height_change : $.noop,
13
+ equalize_on_stack : false,
14
+ act_on_hidden_el: false
14
15
  },
15
16
 
16
17
  init : function (scope, method, options) {
@@ -20,33 +21,47 @@
20
21
  },
21
22
 
22
23
  events : function () {
23
- this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){
24
+ this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
24
25
  this.reflow();
25
26
  }.bind(this));
26
27
  },
27
28
 
28
- equalize: function(equalizer) {
29
+ equalize : function (equalizer) {
29
30
  var isStacked = false,
30
- vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
31
- settings = equalizer.data(this.attr_name(true)+'-init');
31
+ group = equalizer.data('equalizer'),
32
+ settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
33
+ vals,
34
+ firstTopOffset;
35
+
36
+ if (settings.act_on_hidden_el) {
37
+ vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
38
+ }
39
+ else {
40
+ vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
41
+ }
42
+
43
+ if (vals.length === 0) {
44
+ return;
45
+ }
32
46
 
33
- if (vals.length === 0) return;
34
- var firstTopOffset = vals.first().offset().top;
35
47
  settings.before_height_change();
36
- equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');
48
+ equalizer.trigger('before-height-change.fndth.equalizer');
37
49
  vals.height('inherit');
38
- vals.each(function(){
39
- var el = $(this);
40
- if (el.offset().top !== firstTopOffset) {
41
- isStacked = true;
42
- }
43
- });
44
50
 
45
51
  if (settings.equalize_on_stack === false) {
46
- if (isStacked) return;
47
- };
52
+ firstTopOffset = vals.first().offset().top;
53
+ vals.each(function () {
54
+ if ($(this).offset().top !== firstTopOffset) {
55
+ isStacked = true;
56
+ return false;
57
+ }
58
+ });
59
+ if (isStacked) {
60
+ return;
61
+ }
62
+ }
48
63
 
49
- var heights = vals.map(function(){ return $(this).outerHeight(false) }).get();
64
+ var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
50
65
 
51
66
  if (settings.use_tallest) {
52
67
  var max = Math.max.apply(null, heights);
@@ -55,20 +70,35 @@
55
70
  var min = Math.min.apply(null, heights);
56
71
  vals.css('height', min);
57
72
  }
73
+
58
74
  settings.after_height_change();
59
- equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');
75
+ equalizer.trigger('after-height-change.fndtn.equalizer');
60
76
  },
61
77
 
62
78
  reflow : function () {
63
79
  var self = this;
64
80
 
65
- this.S('[' + this.attr_name() + ']', this.scope).each(function(){
66
- var $eq_target = $(this);
67
- self.image_loaded(self.S('img', this), function(){
68
- self.equalize($eq_target)
81
+ this.S('[' + this.attr_name() + ']', this.scope).each(function () {
82
+ var $eq_target = $(this),
83
+ media_query = $eq_target.data('equalizer-mq'),
84
+ ignore_media_query = true;
85
+
86
+ if (media_query) {
87
+ media_query = 'is_' + media_query.replace(/-/g, '_');
88
+ if (Foundation.utils.hasOwnProperty(media_query)) {
89
+ ignore_media_query = false;
90
+ }
91
+ }
92
+
93
+ self.image_loaded(self.S('img', this), function () {
94
+ if (ignore_media_query || Foundation.utils[media_query]()) {
95
+ self.equalize($eq_target)
96
+ } else {
97
+ var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
98
+ vals.css('height', 'auto');
99
+ }
69
100
  });
70
101
  });
71
102
  }
72
103
  };
73
104
  })(jQuery, window, window.document);
74
-