foundation-rails 5.2.1.0 → 5.2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/bower.json +2 -2
  3. data/lib/foundation/rails/version.rb +1 -1
  4. data/test/dummy/Gemfile +1 -1
  5. data/vendor/assets/javascripts/foundation.js +2 -1
  6. data/vendor/assets/javascripts/foundation/foundation.abide.js +60 -19
  7. data/vendor/assets/javascripts/foundation/foundation.accordion.js +9 -5
  8. data/vendor/assets/javascripts/foundation/foundation.alert.js +13 -7
  9. data/vendor/assets/javascripts/foundation/foundation.clearing.js +19 -9
  10. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +8 -3
  11. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +7 -3
  12. data/vendor/assets/javascripts/foundation/foundation.interchange.js +5 -9
  13. data/vendor/assets/javascripts/foundation/foundation.joyride.js +10 -5
  14. data/vendor/assets/javascripts/foundation/foundation.js +29 -23
  15. data/vendor/assets/javascripts/foundation/foundation.magellan.js +15 -12
  16. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +20 -27
  17. data/vendor/assets/javascripts/foundation/foundation.orbit.js +129 -41
  18. data/vendor/assets/javascripts/foundation/foundation.reveal.js +1 -1
  19. data/vendor/assets/javascripts/foundation/foundation.slider.js +27 -14
  20. data/vendor/assets/javascripts/foundation/foundation.tab.js +19 -8
  21. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +9 -4
  22. data/vendor/assets/javascripts/foundation/foundation.topbar.js +5 -3
  23. data/vendor/assets/stylesheets/foundation/_settings.scss +69 -30
  24. data/vendor/assets/stylesheets/foundation/components/_alert-boxes.scss +6 -1
  25. data/vendor/assets/stylesheets/foundation/components/_block-grid.scss +19 -8
  26. data/vendor/assets/stylesheets/foundation/components/_breadcrumbs.scss +3 -3
  27. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +4 -5
  28. data/vendor/assets/stylesheets/foundation/components/_clearing.scss +2 -4
  29. data/vendor/assets/stylesheets/foundation/components/_forms.scss +30 -29
  30. data/vendor/assets/stylesheets/foundation/components/_global.scss +37 -76
  31. data/vendor/assets/stylesheets/foundation/components/_grid.scss +25 -26
  32. data/vendor/assets/stylesheets/foundation/components/_joyride.scss +0 -4
  33. data/vendor/assets/stylesheets/foundation/components/_magellan.scss +2 -2
  34. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +19 -36
  35. data/vendor/assets/stylesheets/foundation/components/_orbit.scss +126 -152
  36. data/vendor/assets/stylesheets/foundation/components/_range-slider.scss +1 -1
  37. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +31 -14
  38. data/vendor/assets/stylesheets/foundation/components/_switch.scss +4 -30
  39. data/vendor/assets/stylesheets/foundation/components/_thumbs.scss +0 -6
  40. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +39 -45
  41. data/vendor/assets/stylesheets/foundation/components/_type.scss +37 -125
  42. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +15 -6
  43. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f0965fc3e4a5d696c852dad76597096c0f9d1d8
4
- data.tar.gz: 3a98e42c47f5e4add5f6be2984d48c6c31647df4
3
+ metadata.gz: 40cac7da73492001caf73d9daac51ce331bcf82d
4
+ data.tar.gz: 054b8d3503933b9a59a40f71d2f4ceed50e3da1c
5
5
  SHA512:
6
- metadata.gz: 911c5575a65d51269b66422ea6439506ad4fd35f2e39e76bbd3aedc8da519538b86cc35f9a7dd37c34354c987c1d12024cbd9cde24260d4e43cd1ee5c608b563
7
- data.tar.gz: 8ee81d522ad33f07b29e704ad42bc47799e754d604c4a114d4e02ea7533ceb971350394f2c20233e6768c78a4b4236e69cce81e369ab04eea72171df8c040949
6
+ metadata.gz: a858d9ec7fa4e39eb917c0d1dd14ed524f434b0b46478a9082ef5b7b3964b9c5d93ef333373551bd2a4e054116a3ccd7e94642ccdb22e12402b937f58b983799
7
+ data.tar.gz: 8cb3506868bdb589eb1f5228f23190e43cb12cc62786abafec975e6a7a33f823f5ea13f6bcdf37a1619d7821c54889f9dca060449be7bca761f487aac40e42ed
data/bower.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "foundation-rails",
3
- "version": "5.2.1.0",
3
+ "version": "5.2.2.0",
4
4
  "dependencies": {
5
- "foundation": "5.2.1"
5
+ "foundation": "5.2.2"
6
6
  }
7
7
  }
@@ -1,5 +1,5 @@
1
1
  module Foundation
2
2
  module Rails
3
- VERSION = "5.2.1.0"
3
+ VERSION = "5.2.2.0"
4
4
  end
5
5
  end
data/test/dummy/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
4
- gem 'foundation-rails', :path => '../../'
4
+ gem 'foundation-rails'#, :path => '../../'
5
5
 
6
6
  gem 'rails', '4.0.1'
7
7
 
@@ -10,7 +10,8 @@
10
10
  //= require foundation/foundation.offcanvas
11
11
  //= require foundation/foundation.orbit
12
12
  //= require foundation/foundation.reveal
13
+ //= require foundation/foundation.slider
13
14
  //= require foundation/foundation.tab
14
15
  //= require foundation/foundation.tooltip
15
16
  //= require foundation/foundation.topbar
16
- //= require foundation/foundation.equalizer
17
+ //= require foundation/foundation.equalizer
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.abide = {
5
5
  name : 'abide',
6
6
 
7
- version : '5.2.1',
7
+ version : '5.2.2',
8
8
 
9
9
  settings : {
10
10
  live_validate : true,
@@ -14,8 +14,8 @@
14
14
  patterns : {
15
15
  alpha: /^[a-zA-Z]+$/,
16
16
  alpha_numeric : /^[a-zA-Z0-9]+$/,
17
- integer: /^\d+$/,
18
- number: /-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?/,
17
+ integer: /^[-+]?\d+$/,
18
+ number: /^[-+]?\d*(?:\.\d+)?$/,
19
19
 
20
20
  // amex, visa, diners
21
21
  card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
@@ -24,18 +24,18 @@
24
24
  // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
25
25
  email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
26
26
 
27
- url: /(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?/,
27
+ url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
28
28
  // abc.de
29
29
  domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/,
30
30
 
31
- datetime: /([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))/,
31
+ datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
32
32
  // YYYY-MM-DD
33
- date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))/,
33
+ date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
34
34
  // HH:MM:SS
35
- time : /(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}/,
36
- dateISO: /\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/,
35
+ time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
36
+ dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
37
37
  // MM/DD/YYYY
38
- month_day_year : /(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/,
38
+ month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$/,
39
39
 
40
40
  // #FFF or #FFFFFF
41
41
  color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
@@ -60,7 +60,7 @@
60
60
  events : function (scope) {
61
61
  var self = this,
62
62
  form = self.S(scope).attr('novalidate', 'novalidate'),
63
- settings = form.data(this.attr_name(true) + '-init');
63
+ settings = form.data(this.attr_name(true) + '-init') || {};
64
64
 
65
65
  this.invalid_attr = this.add_namespace('data-invalid');
66
66
 
@@ -79,7 +79,6 @@
79
79
  self.validate([this], e);
80
80
  })
81
81
  .on('keydown.fndtn.abide', function (e) {
82
- var settings = $(this).closest('form').data(self.attr_name(true) + '-init');
83
82
  if (settings.live_validate === true) {
84
83
  clearTimeout(self.timer);
85
84
  self.timer = setTimeout(function () {
@@ -98,15 +97,17 @@
98
97
  validate : function (els, e, is_ajax) {
99
98
  var validations = this.parse_patterns(els),
100
99
  validation_count = validations.length,
101
- form = this.S(els[0]).closest('form'),
100
+ form = this.S(els[0]).closest('[data-' + this.attr_name(true) + ']'),
101
+ settings = form.data(this.attr_name(true) + '-init') || {},
102
102
  submit_event = /submit/.test(e.type);
103
103
 
104
+ form.trigger('validated');
104
105
  // Has to count up to make sure the focus gets applied to the top error
105
106
  for (var i=0; i < validation_count; i++) {
106
107
  if (!validations[i] && (submit_event || is_ajax)) {
107
- if (this.settings.focus_on_invalid) els[i].focus();
108
+ if (settings.focus_on_invalid) els[i].focus();
108
109
  form.trigger('invalid');
109
- this.S(els[i]).closest('form').attr(this.invalid_attr, '');
110
+ this.S(els[i]).closest('[data-' + this.attr_name(true) + ']').attr(this.invalid_attr, '');
110
111
  return false;
111
112
  }
112
113
  }
@@ -142,7 +143,7 @@
142
143
  if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
143
144
  return [el, this.settings.patterns[pattern], required];
144
145
  } else if (pattern.length > 0) {
145
- return [el, new RegExp(pattern), required];
146
+ return [el, new RegExp('^'+pattern+'$'), required];
146
147
  }
147
148
 
148
149
  if (this.settings.patterns.hasOwnProperty(type)) {
@@ -156,7 +157,9 @@
156
157
 
157
158
  check_validation_and_apply_styles : function (el_patterns) {
158
159
  var i = el_patterns.length,
159
- validations = [];
160
+ validations = [],
161
+ form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
162
+ settings = form.data(this.attr_name(true) + '-init') || {};
160
163
 
161
164
  while (i--) {
162
165
  var el = el_patterns[i][0],
@@ -195,20 +198,21 @@
195
198
  this.S(el).attr(this.invalid_attr, '');
196
199
  parent.addClass('error');
197
200
  }
201
+
198
202
  } else {
199
203
 
200
204
  if (el_patterns[i][1].test(value) && valid_length ||
201
205
  !required && el.value.length < 1 || $(el).attr('disabled')) {
202
206
  this.S(el).removeAttr(this.invalid_attr);
203
207
  parent.removeClass('error');
204
- if (label.length > 0 && this.settings.error_labels) label.removeClass('error');
208
+ if (label.length > 0 && settings.error_labels) label.removeClass('error');
205
209
 
206
210
  validations.push(true);
207
211
  $(el).triggerHandler('valid');
208
212
  } else {
209
213
  this.S(el).attr(this.invalid_attr, '');
210
214
  parent.addClass('error');
211
- if (label.length > 0 && this.settings.error_labels) label.addClass('error');
215
+ if (label.length > 0 && settings.error_labels) label.addClass('error');
212
216
 
213
217
  validations.push(false);
214
218
  $(el).triggerHandler('invalid');
@@ -234,7 +238,7 @@
234
238
 
235
239
  valid_radio : function (el, required) {
236
240
  var name = el.getAttribute('name'),
237
- group = document.getElementsByName(name),
241
+ group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name="+name+"]"),
238
242
  count = group.length,
239
243
  valid = false;
240
244
 
@@ -252,6 +256,43 @@
252
256
  }
253
257
  }
254
258
 
259
+ return valid;
260
+ },
261
+
262
+ valid_equal: function(el, required, parent) {
263
+ var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
264
+ to = el.value,
265
+ valid = (from === to);
266
+
267
+ if (valid) {
268
+ this.S(el).removeAttr(this.invalid_attr);
269
+ parent.removeClass('error');
270
+ } else {
271
+ this.S(el).attr(this.invalid_attr, '');
272
+ parent.addClass('error');
273
+ }
274
+
275
+ return valid;
276
+ },
277
+
278
+ valid_oneof: function(el, required, parent, doNotValidateOthers) {
279
+ var el = this.S(el),
280
+ others = this.S('[' + this.add_namespace('data-oneof') + ']'),
281
+ valid = others.filter(':checked').length > 0;
282
+
283
+ if (valid) {
284
+ el.removeAttr(this.invalid_attr).parent().removeClass('error');
285
+ } else {
286
+ el.attr(this.invalid_attr, '').parent().addClass('error');
287
+ }
288
+
289
+ if (!doNotValidateOthers) {
290
+ var _this = this;
291
+ others.each(function() {
292
+ _this.valid_oneof.call(_this, this, null, null, true);
293
+ });
294
+ }
295
+
255
296
  return valid;
256
297
  }
257
298
  };
@@ -4,10 +4,11 @@
4
4
  Foundation.libs.accordion = {
5
5
  name : 'accordion',
6
6
 
7
- version : '5.2.1',
7
+ version : '5.2.2',
8
8
 
9
9
  settings : {
10
10
  active_class: 'active',
11
+ multi_expand: false,
11
12
  toggleable: true
12
13
  },
13
14
 
@@ -24,7 +25,7 @@
24
25
  var accordion = S(this).closest('[' + self.attr_name() + ']'),
25
26
  target = S('#' + this.href.split('#')[1]),
26
27
  siblings = S('dd > .content', accordion),
27
- aunts = $('> dd', accordion),
28
+ aunts = $('dd', accordion),
28
29
  settings = accordion.data(self.attr_name(true) + '-init'),
29
30
  active_content = S('dd > .content.' + settings.active_class, accordion),
30
31
  active_parent = S('dd.' + settings.active_class, accordion);
@@ -32,13 +33,16 @@
32
33
 
33
34
  if (! S(this).closest('dl').is(accordion)) { return; }
34
35
 
35
- if (active_content[0] == target[0] && settings.toggleable) {
36
+ if (settings.toggleable && target.is(active_content)) {
36
37
  active_parent.toggleClass(settings.active_class, false);
37
38
  return target.toggleClass(settings.active_class, false);
38
39
  }
39
40
 
40
- siblings.removeClass(settings.active_class);
41
- aunts.removeClass(settings.active_class);
41
+ if (!settings.multi_expand) {
42
+ siblings.removeClass(settings.active_class);
43
+ aunts.removeClass(settings.active_class);
44
+ }
45
+
42
46
  target.addClass(settings.active_class).parent().addClass(settings.active_class);
43
47
  });
44
48
  },
@@ -4,11 +4,9 @@
4
4
  Foundation.libs.alert = {
5
5
  name : 'alert',
6
6
 
7
- version : '5.2.1',
7
+ version : '5.2.2',
8
8
 
9
9
  settings : {
10
- animation: 'fadeOut',
11
- speed: 300, // fade out speed
12
10
  callback: function (){}
13
11
  },
14
12
 
@@ -25,10 +23,18 @@
25
23
  settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
26
24
 
27
25
  e.preventDefault();
28
- alertBox[settings.animation](settings.speed, function () {
29
- S(this).trigger('close').remove();
30
- settings.callback();
31
- });
26
+ if ('transitionend' in window || 'webkitTransitionEnd' in window || 'oTransitionEnd' in window) {
27
+ alertBox.addClass("alert-close");
28
+ alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function(e) {
29
+ S(this).trigger('close').remove();
30
+ settings.callback();
31
+ });
32
+ } else {
33
+ alertBox.fadeOut(300, function () {
34
+ S(this).trigger('close').remove();
35
+ settings.callback();
36
+ });
37
+ }
32
38
  });
33
39
  },
34
40
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.clearing = {
5
5
  name : 'clearing',
6
6
 
7
- version: '5.2.1',
7
+ version: '5.2.2',
8
8
 
9
9
  settings : {
10
10
  templates : {
@@ -18,7 +18,7 @@
18
18
  // add 'div.clearing-blackout, div.visible-img' to close on background click
19
19
  close_selectors : '.clearing-close',
20
20
 
21
- touch_label : '&larr;&nbsp;Swipe to Advance&nbsp;&rarr;',
21
+ touch_label : '',
22
22
 
23
23
  // event initializers and locks
24
24
  init : false,
@@ -146,14 +146,24 @@
146
146
  assemble : function ($li) {
147
147
  var $el = $li.parent();
148
148
 
149
- if ($el.parent().hasClass('carousel')) return;
149
+ if ($el.parent().hasClass('carousel')) {
150
+ return;
151
+ }
152
+
150
153
  $el.after('<div id="foundationClearingHolder"></div>');
151
-
154
+ var grid = $el.detach();
155
+ var grid_outerHTML = '';
156
+ if (grid[0] == null) {
157
+ return;
158
+ } else {
159
+ grid_outerHTML = grid[0].outerHTML;
160
+ }
161
+
152
162
  var holder = this.S('#foundationClearingHolder'),
153
163
  settings = $el.data(this.attr_name(true) + '-init'),
154
164
  grid = $el.detach(),
155
165
  data = {
156
- grid: '<div class="carousel">' + grid[0].outerHTML + '</div>',
166
+ grid: '<div class="carousel">' + grid_outerHTML + '</div>',
157
167
  viewing: settings.templates.viewing
158
168
  },
159
169
  wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
@@ -171,10 +181,10 @@
171
181
  var self = this,
172
182
  body = $(document.body),
173
183
  root = target.closest('.clearing-assembled'),
174
- container = $('div', root).first(),
175
- visible_image = $('.visible-img', container),
176
- image = $('img', visible_image).not($image),
177
- label = $('.clearing-touch-label', '.clearing-blackout'),
184
+ container = self.S('div', root).first(),
185
+ visible_image = self.S('.visible-img', container),
186
+ image = self.S('img', visible_image).not($image),
187
+ label = self.S('.clearing-touch-label', container),
178
188
  error = false;
179
189
 
180
190
  image.error(function () {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.dropdown = {
5
5
  name : 'dropdown',
6
6
 
7
- version : '5.2.1',
7
+ version : '5.2.2',
8
8
 
9
9
  settings : {
10
10
  active_class: 'open',
@@ -28,8 +28,10 @@
28
28
  .off('.dropdown')
29
29
  .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
30
30
  var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
31
- e.preventDefault();
32
- if (!settings.is_hover || Modernizr.touch) self.toggle(S(this));
31
+ if (!settings.is_hover || Modernizr.touch) {
32
+ e.preventDefault();
33
+ self.toggle($(this));
34
+ }
33
35
  })
34
36
  .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
35
37
  var $this = S(this);
@@ -101,6 +103,8 @@
101
103
  if (self.S(this).hasClass(self.settings.active_class)) {
102
104
  self.S(this)
103
105
  .css(Foundation.rtl ? 'right':'left', '-99999px')
106
+ .removeClass(self.settings.active_class)
107
+ .prev('[' + self.attr_name() + ']')
104
108
  .removeClass(self.settings.active_class);
105
109
 
106
110
  self.S(this).trigger('closed', [dropdown]);
@@ -119,6 +123,7 @@
119
123
  this
120
124
  .css(dropdown
121
125
  .addClass(this.settings.active_class), target);
126
+ dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
122
127
  dropdown.trigger('opened', [dropdown, target]);
123
128
  },
124
129
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.equalizer = {
5
5
  name : 'equalizer',
6
6
 
7
- version : '5.2.1',
7
+ version : '5.2.2',
8
8
 
9
9
  settings : {
10
10
  use_tallest: true,
@@ -13,6 +13,7 @@
13
13
  },
14
14
 
15
15
  init : function (scope, method, options) {
16
+ Foundation.inherit(this, 'image_loaded');
16
17
  this.bindings(method, options);
17
18
  this.reflow();
18
19
  },
@@ -25,7 +26,7 @@
25
26
 
26
27
  equalize: function(equalizer) {
27
28
  var isStacked = false,
28
- vals = equalizer.find('[' + this.attr_name() + '-watch]'),
29
+ vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
29
30
  firstTopOffset = vals.first().offset().top,
30
31
  settings = equalizer.data(this.attr_name(true)+'-init');
31
32
 
@@ -57,7 +58,10 @@
57
58
  var self = this;
58
59
 
59
60
  this.S('[' + this.attr_name() + ']', this.scope).each(function(){
60
- self.equalize($(this));
61
+ var $eq_target = $(this);
62
+ self.image_loaded(self.S('img', this), function(){
63
+ self.equalize($eq_target)
64
+ });
61
65
  });
62
66
  }
63
67
  };
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.interchange = {
5
5
  name : 'interchange',
6
6
 
7
- version : '5.2.1',
7
+ version : '5.2.2',
8
8
 
9
9
  cache : {},
10
10
 
@@ -57,14 +57,10 @@
57
57
 
58
58
  if (last_path == path) return;
59
59
 
60
-
61
- var regex = "/^.(\.jpg|\.jpeg|\.png|\.gif|\.tiff|\.bmp)\??|#?./";
62
-
63
- if (new RegExp(regex,'i').test(path)){
64
-
65
- $(el).css('background-image', 'url('+path+')');
66
- el.data('interchange-last-path', path);
67
- return trigger(path);
60
+ if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
61
+ $(el).css('background-image', 'url('+path+')');
62
+ el.data('interchange-last-path', path);
63
+ return trigger(path);
68
64
  }
69
65
 
70
66
  return $.get(path, function (response) {