foundation-rails 5.5.1.2 → 5.5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/bower.json +2 -2
  2. data/lib/foundation/rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/foundation.js +1 -1
  4. data/vendor/assets/javascripts/foundation/foundation.abide.js +96 -28
  5. data/vendor/assets/javascripts/foundation/foundation.accordion.js +28 -7
  6. data/vendor/assets/javascripts/foundation/foundation.alert.js +3 -3
  7. data/vendor/assets/javascripts/foundation/foundation.clearing.js +50 -20
  8. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +26 -11
  9. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +43 -16
  10. data/vendor/assets/javascripts/foundation/foundation.interchange.js +19 -14
  11. data/vendor/assets/javascripts/foundation/foundation.joyride.js +1 -1
  12. data/vendor/assets/javascripts/foundation/foundation.js +51 -29
  13. data/vendor/assets/javascripts/foundation/foundation.magellan.js +40 -28
  14. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +3 -3
  15. data/vendor/assets/javascripts/foundation/foundation.orbit.js +1 -1
  16. data/vendor/assets/javascripts/foundation/foundation.reveal.js +70 -43
  17. data/vendor/assets/javascripts/foundation/foundation.slider.js +23 -5
  18. data/vendor/assets/javascripts/foundation/foundation.tab.js +30 -18
  19. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +47 -15
  20. data/vendor/assets/javascripts/foundation/foundation.topbar.js +31 -25
  21. data/vendor/assets/stylesheets/foundation.scss +37 -38
  22. data/vendor/assets/stylesheets/foundation/_functions.scss +52 -42
  23. data/vendor/assets/stylesheets/foundation/_settings.scss +53 -34
  24. data/vendor/assets/stylesheets/foundation/components/_accordion.scss +7 -7
  25. data/vendor/assets/stylesheets/foundation/components/_alert-boxes.scss +11 -11
  26. data/vendor/assets/stylesheets/foundation/components/_block-grid.scss +13 -13
  27. data/vendor/assets/stylesheets/foundation/components/_breadcrumbs.scss +17 -18
  28. data/vendor/assets/stylesheets/foundation/components/_button-groups.scss +29 -22
  29. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +13 -17
  30. data/vendor/assets/stylesheets/foundation/components/_clearing.scss +51 -47
  31. data/vendor/assets/stylesheets/foundation/components/_dropdown-buttons.scss +10 -11
  32. data/vendor/assets/stylesheets/foundation/components/_dropdown.scss +42 -36
  33. data/vendor/assets/stylesheets/foundation/components/_flex-video.scss +7 -7
  34. data/vendor/assets/stylesheets/foundation/components/_forms.scss +82 -50
  35. data/vendor/assets/stylesheets/foundation/components/_global.scss +86 -64
  36. data/vendor/assets/stylesheets/foundation/components/_grid.scss +24 -21
  37. data/vendor/assets/stylesheets/foundation/components/_icon-bar.scss +335 -234
  38. data/vendor/assets/stylesheets/foundation/components/_inline-lists.scss +8 -8
  39. data/vendor/assets/stylesheets/foundation/components/_joyride.scss +40 -42
  40. data/vendor/assets/stylesheets/foundation/components/_keystrokes.scss +2 -3
  41. data/vendor/assets/stylesheets/foundation/components/_labels.scss +6 -6
  42. data/vendor/assets/stylesheets/foundation/components/_magellan.scss +2 -2
  43. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +178 -175
  44. data/vendor/assets/stylesheets/foundation/components/_orbit.scss +82 -62
  45. data/vendor/assets/stylesheets/foundation/components/_pagination.scss +15 -15
  46. data/vendor/assets/stylesheets/foundation/components/_panels.scss +21 -15
  47. data/vendor/assets/stylesheets/foundation/components/_pricing-tables.scss +16 -16
  48. data/vendor/assets/stylesheets/foundation/components/_progress-bars.scss +4 -4
  49. data/vendor/assets/stylesheets/foundation/components/_range-slider.scss +23 -16
  50. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +27 -27
  51. data/vendor/assets/stylesheets/foundation/components/_side-nav.scss +15 -11
  52. data/vendor/assets/stylesheets/foundation/components/_split-buttons.scss +16 -16
  53. data/vendor/assets/stylesheets/foundation/components/_sub-nav.scss +14 -11
  54. data/vendor/assets/stylesheets/foundation/components/_switches.scss +22 -19
  55. data/vendor/assets/stylesheets/foundation/components/_tables.scss +8 -8
  56. data/vendor/assets/stylesheets/foundation/components/_tabs.scss +49 -32
  57. data/vendor/assets/stylesheets/foundation/components/_thumbs.scss +8 -8
  58. data/vendor/assets/stylesheets/foundation/components/_tooltips.scss +25 -25
  59. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +163 -122
  60. data/vendor/assets/stylesheets/foundation/components/_type.scss +19 -19
  61. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +23 -5
  62. data/vendor/assets/stylesheets/normalize.scss +8 -11
  63. metadata +28 -20
  64. checksums.yaml +0 -7
  65. data/vendor/assets/stylesheets/foundation/components/_toolbar.scss +0 -72
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.offcanvas = {
5
5
  name : 'offcanvas',
6
6
 
7
- version : '5.5.1',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
10
  open_method : 'move',
@@ -111,13 +111,13 @@
111
111
 
112
112
  show : function (class_name, $off_canvas) {
113
113
  $off_canvas = $off_canvas || this.get_wrapper();
114
- $off_canvas.trigger('open').trigger('open.fndtn.offcanvas');
114
+ $off_canvas.trigger('open.fndtn.offcanvas');
115
115
  $off_canvas.addClass(class_name);
116
116
  },
117
117
 
118
118
  hide : function (class_name, $off_canvas) {
119
119
  $off_canvas = $off_canvas || this.get_wrapper();
120
- $off_canvas.trigger('close').trigger('close.fndtn.offcanvas');
120
+ $off_canvas.trigger('close.fndtn.offcanvas');
121
121
  $off_canvas.removeClass(class_name);
122
122
  },
123
123
 
@@ -407,7 +407,7 @@
407
407
  Foundation.libs.orbit = {
408
408
  name : 'orbit',
409
409
 
410
- version : '5.5.1',
410
+ version : '5.5.2',
411
411
 
412
412
  settings : {
413
413
  animation : 'slide',
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.reveal = {
5
5
  name : 'reveal',
6
6
 
7
- version : '5.5.1',
7
+ version : '5.5.2',
8
8
 
9
9
  locked : false,
10
10
 
@@ -21,6 +21,7 @@
21
21
  opened : function(){},
22
22
  close : function(){},
23
23
  closed : function(){},
24
+ on_ajax_error: $.noop,
24
25
  bg : $('.reveal-modal-bg'),
25
26
  css : {
26
27
  open : {
@@ -52,7 +53,8 @@
52
53
 
53
54
  if (!self.locked) {
54
55
  var element = S(this),
55
- ajax = element.data(self.data_attr('reveal-ajax'));
56
+ ajax = element.data(self.data_attr('reveal-ajax')),
57
+ replaceContentSel = element.data(self.data_attr('reveal-replace-content'));
56
58
 
57
59
  self.locked = true;
58
60
 
@@ -60,8 +62,7 @@
60
62
  self.open.call(self, element);
61
63
  } else {
62
64
  var url = ajax === true ? element.attr('href') : ajax;
63
-
64
- self.open.call(self, element, {url : url});
65
+ self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel });
65
66
  }
66
67
  }
67
68
  });
@@ -82,7 +83,7 @@
82
83
  }
83
84
 
84
85
  self.locked = true;
85
- self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));
86
+ self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']'));
86
87
  }
87
88
  });
88
89
 
@@ -153,6 +154,7 @@
153
154
  var settings = modal.data(self.attr_name(true) + '-init');
154
155
  settings = settings || this.settings;
155
156
 
157
+
156
158
  if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) {
157
159
  return self.close(modal);
158
160
  }
@@ -165,8 +167,15 @@
165
167
  .data('offset', this.cache_offset(modal));
166
168
  }
167
169
 
170
+ modal.attr('tabindex','0').attr('aria-hidden','false');
171
+
168
172
  this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open
169
173
 
174
+ // Prevent namespace event from triggering twice
175
+ modal.on('open.fndtn.reveal', function(e) {
176
+ if (e.namespace !== 'fndtn.reveal') return;
177
+ });
178
+
170
179
  modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
171
180
 
172
181
  if (open_modal.length < 1) {
@@ -182,16 +191,15 @@
182
191
  if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
183
192
  if (open_modal.length > 0) {
184
193
  if (settings.multiple_opened) {
185
- this.to_back(open_modal);
194
+ self.to_back(open_modal);
186
195
  } else {
187
- this.hide(open_modal, settings.css.close);
196
+ self.hide(open_modal, settings.css.close);
188
197
  }
189
198
  }
190
199
 
191
200
  this.show(modal, settings.css.open);
192
201
  } else {
193
202
  var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
194
-
195
203
  $.extend(ajax_settings, {
196
204
  success : function (data, textStatus, jqXHR) {
197
205
  if ( $.isFunction(old_success) ) {
@@ -201,21 +209,33 @@
201
209
  }
202
210
  }
203
211
 
204
- modal.html(data);
212
+ if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') {
213
+ modal.find(options.replaceContentSel).html(data);
214
+ } else {
215
+ modal.html(data);
216
+ }
217
+
205
218
  self.S(modal).foundation('section', 'reflow');
206
219
  self.S(modal).children().foundation();
207
220
 
208
221
  if (open_modal.length > 0) {
209
222
  if (settings.multiple_opened) {
210
- this.to_back(open_modal);
223
+ self.to_back(open_modal);
211
224
  } else {
212
- this.hide(open_modal, settings.css.close);
225
+ self.hide(open_modal, settings.css.close);
213
226
  }
214
227
  }
215
228
  self.show(modal, settings.css.open);
216
229
  }
217
230
  });
218
231
 
232
+ // check for if user initalized with error callback
233
+ if (settings.on_ajax_error !== $.noop) {
234
+ $.extend(ajax_settings, {
235
+ error : settings.on_ajax_error
236
+ });
237
+ }
238
+
219
239
  $.ajax(ajax_settings);
220
240
  }
221
241
  }
@@ -225,23 +245,28 @@
225
245
  close : function (modal) {
226
246
  var modal = modal && modal.length ? modal : this.S(this.scope),
227
247
  open_modals = this.S('[' + this.attr_name() + '].open'),
228
- settings = modal.data(this.attr_name(true) + '-init') || this.settings;
248
+ settings = modal.data(this.attr_name(true) + '-init') || this.settings,
249
+ self = this;
229
250
 
230
251
  if (open_modals.length > 0) {
252
+
253
+ modal.removeAttr('tabindex','0').attr('aria-hidden','true');
254
+
231
255
  this.locked = true;
232
256
  this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open
233
- modal.trigger('close').trigger('close.fndtn.reveal');
234
-
257
+
258
+ modal.trigger('close.fndtn.reveal');
259
+
235
260
  if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
236
- this.toggle_bg(modal, false);
237
- this.to_front(modal);
261
+ self.toggle_bg(modal, false);
262
+ self.to_front(modal);
238
263
  }
239
-
264
+
240
265
  if (settings.multiple_opened) {
241
- this.hide(modal, settings.css.close, settings);
242
- this.to_front($($.makeArray(open_modals).reverse()[1]));
266
+ self.hide(modal, settings.css.close, settings);
267
+ self.to_front($($.makeArray(open_modals).reverse()[1]));
243
268
  } else {
244
- this.hide(open_modals, settings.css.close, settings);
269
+ self.hide(open_modals, settings.css.close, settings);
245
270
  }
246
271
  }
247
272
  },
@@ -276,7 +301,8 @@
276
301
  // is modal
277
302
  if (css) {
278
303
  var settings = el.data(this.attr_name(true) + '-init') || this.settings,
279
- root_element = settings.root_element;
304
+ root_element = settings.root_element,
305
+ context = this;
280
306
 
281
307
  if (el.parent(root_element).length === 0) {
282
308
  var placeholder = el.wrap('<div style="display: none;" />').parent();
@@ -304,11 +330,11 @@
304
330
  return el
305
331
  .css(css)
306
332
  .animate(end_css, settings.animation_speed, 'linear', function () {
307
- this.locked = false;
308
- el.trigger('opened').trigger('opened.fndtn.reveal');
309
- }.bind(this))
333
+ context.locked = false;
334
+ el.trigger('opened.fndtn.reveal');
335
+ })
310
336
  .addClass('open');
311
- }.bind(this), settings.animation_speed / 2);
337
+ }, settings.animation_speed / 2);
312
338
  }
313
339
 
314
340
  if (animData.fade) {
@@ -319,14 +345,14 @@
319
345
  return el
320
346
  .css(css)
321
347
  .animate(end_css, settings.animation_speed, 'linear', function () {
322
- this.locked = false;
323
- el.trigger('opened').trigger('opened.fndtn.reveal');
324
- }.bind(this))
348
+ context.locked = false;
349
+ el.trigger('opened.fndtn.reveal');
350
+ })
325
351
  .addClass('open');
326
- }.bind(this), settings.animation_speed / 2);
352
+ }, settings.animation_speed / 2);
327
353
  }
328
354
 
329
- return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal');
355
+ return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal');
330
356
  }
331
357
 
332
358
  var settings = this.settings;
@@ -340,11 +366,11 @@
340
366
 
341
367
  return el.show();
342
368
  },
343
-
369
+
344
370
  to_back : function(el) {
345
371
  el.addClass('toback');
346
372
  },
347
-
373
+
348
374
  to_front : function(el) {
349
375
  el.removeClass('toback');
350
376
  },
@@ -352,7 +378,8 @@
352
378
  hide : function (el, css) {
353
379
  // is modal
354
380
  if (css) {
355
- var settings = el.data(this.attr_name(true) + '-init');
381
+ var settings = el.data(this.attr_name(true) + '-init'),
382
+ context = this;
356
383
  settings = settings || this.settings;
357
384
 
358
385
  var animData = getAnimationData(settings.animation);
@@ -368,11 +395,11 @@
368
395
  return setTimeout(function () {
369
396
  return el
370
397
  .animate(end_css, settings.animation_speed, 'linear', function () {
371
- this.locked = false;
372
- el.css(css).trigger('closed').trigger('closed.fndtn.reveal');
373
- }.bind(this))
398
+ context.locked = false;
399
+ el.css(css).trigger('closed.fndtn.reveal');
400
+ })
374
401
  .removeClass('open');
375
- }.bind(this), settings.animation_speed / 2);
402
+ }, settings.animation_speed / 2);
376
403
  }
377
404
 
378
405
  if (animData.fade) {
@@ -381,14 +408,14 @@
381
408
  return setTimeout(function () {
382
409
  return el
383
410
  .animate(end_css, settings.animation_speed, 'linear', function () {
384
- this.locked = false;
385
- el.css(css).trigger('closed').trigger('closed.fndtn.reveal');
386
- }.bind(this))
411
+ context.locked = false;
412
+ el.css(css).trigger('closed.fndtn.reveal');
413
+ })
387
414
  .removeClass('open');
388
- }.bind(this), settings.animation_speed / 2);
415
+ }, settings.animation_speed / 2);
389
416
  }
390
417
 
391
- return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal');
418
+ return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal');
392
419
  }
393
420
 
394
421
  var settings = this.settings;
@@ -438,7 +465,7 @@
438
465
  },
439
466
 
440
467
  cache_offset : function (modal) {
441
- var offset = modal.show().height() + parseInt(modal.css('top'), 10);
468
+ var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY;
442
469
 
443
470
  modal.hide();
444
471
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.slider = {
5
5
  name : 'slider',
6
6
 
7
- version : '5.5.1',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
10
  start : 0,
@@ -63,6 +63,24 @@
63
63
  .on('resize.fndtn.slider', self.throttle(function (e) {
64
64
  self.reflow();
65
65
  }, 300));
66
+
67
+ // update slider value as users change input value
68
+ this.S('[' + this.attr_name() + ']').each(function () {
69
+ var slider = $(this),
70
+ handle = slider.children('.range-slider-handle')[0],
71
+ settings = self.initialize_settings(handle);
72
+
73
+ if (settings.display_selector != '') {
74
+ $(settings.display_selector).each(function(){
75
+ if (this.hasOwnProperty('value')) {
76
+ $(this).change(function(){
77
+ // is there a better way to do this?
78
+ slider.foundation("slider", "set_value", $(this).val());
79
+ });
80
+ }
81
+ });
82
+ }
83
+ });
66
84
  },
67
85
 
68
86
  get_cursor_position : function (e, xy) {
@@ -139,11 +157,11 @@
139
157
  $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
140
158
  }
141
159
 
142
- $handle_parent.attr(this.attr_name(), value).trigger('change').trigger('change.fndtn.slider');
160
+ $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider');
143
161
 
144
162
  $hidden_inputs.val(value);
145
163
  if (settings.trigger_input_change) {
146
- $hidden_inputs.trigger('change');
164
+ $hidden_inputs.trigger('change.fndtn.slider');
147
165
  }
148
166
 
149
167
  if (!$handle[0].hasAttribute('aria-valuemin')) {
@@ -156,7 +174,7 @@
156
174
 
157
175
  if (settings.display_selector != '') {
158
176
  $(settings.display_selector).each(function () {
159
- if (this.hasOwnProperty('value')) {
177
+ if (this.hasAttribute('value')) {
160
178
  $(this).val(value);
161
179
  } else {
162
180
  $(this).text(value);
@@ -223,7 +241,7 @@
223
241
  }
224
242
 
225
243
  $.data(handle, 'bar', $(handle).parent());
226
- $.data(handle, 'settings', settings);
244
+ return $.data(handle, 'settings', settings);
227
245
  },
228
246
 
229
247
  set_initial_position : function ($ele) {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.tab = {
5
5
  name : 'tab',
6
6
 
7
- version : '5.5.1',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
10
  active_class : 'active',
@@ -20,40 +20,52 @@
20
20
  var self = this,
21
21
  S = this.S;
22
22
 
23
- this.bindings(method, options);
23
+ // Store the default active tabs which will be referenced when the
24
+ // location hash is absent, as in the case of navigating the tabs and
25
+ // returning to the first viewing via the browser Back button.
26
+ S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
27
+ self.default_tab_hashes.push(this.hash);
28
+ });
24
29
 
25
30
  // store the initial href, which is used to allow correct behaviour of the
26
31
  // browser back button when deep linking is turned on.
27
32
  self.entry_location = window.location.href;
28
33
 
34
+ this.bindings(method, options);
29
35
  this.handle_location_hash_change();
30
-
31
- // Store the default active tabs which will be referenced when the
32
- // location hash is absent, as in the case of navigating the tabs and
33
- // returning to the first viewing via the browser Back button.
34
- S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
35
- self.default_tab_hashes.push(this.hash);
36
- });
37
36
  },
38
37
 
39
38
  events : function () {
40
39
  var self = this,
41
40
  S = this.S;
42
41
 
43
- var usual_tab_behavior = function (e) {
44
- var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
42
+ var usual_tab_behavior = function (e, target) {
43
+ var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
45
44
  if (!settings.is_hover || Modernizr.touch) {
46
45
  e.preventDefault();
47
46
  e.stopPropagation();
48
- self.toggle_active_tab(S(this).parent());
47
+ self.toggle_active_tab(S(target).parent());
49
48
  }
50
49
  };
51
50
 
52
51
  S(this.scope)
53
52
  .off('.tab')
53
+ // Key event: focus/tab key
54
+ .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
55
+ var el = this;
56
+ var keyCode = e.keyCode || e.which;
57
+ // if user pressed tab key
58
+ if (keyCode == 9) {
59
+ e.preventDefault();
60
+ // TODO: Change usual_tab_behavior into accessibility function?
61
+ usual_tab_behavior(e, el);
62
+ }
63
+ })
54
64
  // Click event: tab title
55
- .on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
56
- .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
65
+ .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
66
+ var el = this;
67
+ usual_tab_behavior(e, el);
68
+ })
57
69
  // Hover event: tab title
58
70
  .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
59
71
  var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
@@ -178,8 +190,8 @@
178
190
  };
179
191
 
180
192
  // allow usage of data-tab-content attribute instead of href
181
- if (S(this).data(this.data_attr('tab-content'))) {
182
- target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1];
193
+ if (anchor.data('tab-content')) {
194
+ target_hash = '#' + anchor.data('tab-content').split('#')[1];
183
195
  target = S(target_hash);
184
196
  }
185
197
 
@@ -216,8 +228,8 @@
216
228
  target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true', tabindex : -1});
217
229
  target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
218
230
  settings.callback(tab);
219
- target.triggerHandler('toggled', [tab]);
220
- tabs.triggerHandler('toggled', [target]);
231
+ target.triggerHandler('toggled', [target]);
232
+ tabs.triggerHandler('toggled', [tab]);
221
233
 
222
234
  tab_link.off('keydown').on('keydown', interpret_keyup_action );
223
235
  },