zurb-foundation 4.1.2 → 4.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/CONTRIBUTING.md +2 -2
  2. data/Gemfile.lock +1 -1
  3. data/README.md +11 -7
  4. data/docs/CHANGELOG.md +22 -3
  5. data/docs/_sidebar-components.html.erb +3 -1
  6. data/docs/_sidebar.html.erb +3 -1
  7. data/docs/components/breadcrumbs.html.erb +9 -1
  8. data/docs/components/forms.html.erb +12 -6
  9. data/docs/components/grid.html.erb +3 -3
  10. data/docs/components/kitchen-sink.html.erb +7 -1
  11. data/docs/components/labels.html.erb +3 -1
  12. data/docs/components/section.html.erb +99 -10
  13. data/docs/components/top-bar.html.erb +2 -2
  14. data/docs/components/type.html.erb +31 -2
  15. data/docs/css/docs.scss +0 -5
  16. data/docs/index.html.erb +2 -0
  17. data/docs/javascript.html.erb +8 -5
  18. data/docs/sass.html.erb +1005 -127
  19. data/js/foundation/foundation.clearing.js +8 -4
  20. data/js/foundation/foundation.dropdown.js +43 -23
  21. data/js/foundation/foundation.forms.js +5 -3
  22. data/js/foundation/foundation.joyride.js +2 -6
  23. data/js/foundation/foundation.js +70 -47
  24. data/js/foundation/foundation.orbit.js +10 -4
  25. data/js/foundation/foundation.reveal.js +8 -3
  26. data/js/foundation/foundation.section.js +188 -72
  27. data/js/foundation/foundation.tooltips.js +4 -3
  28. data/js/foundation/foundation.topbar.js +4 -1
  29. data/lib/foundation/generators/install_generator.rb +2 -2
  30. data/lib/foundation/version.rb +1 -1
  31. data/scss/foundation.scss +1 -1
  32. data/{templates/project/scss/_settings.scss → scss/foundation/_variables.scss} +347 -173
  33. data/scss/foundation/components/_alert-boxes.scss +1 -1
  34. data/scss/foundation/components/_block-grid.scss +6 -2
  35. data/scss/foundation/components/_breadcrumbs.scss +20 -13
  36. data/scss/foundation/components/_button-groups.scss +18 -6
  37. data/scss/foundation/components/_buttons.scss +18 -11
  38. data/scss/foundation/components/_clearing.scss +6 -0
  39. data/scss/foundation/components/_custom-forms.scss +29 -23
  40. data/scss/foundation/components/_dropdown-buttons.scss +1 -1
  41. data/scss/foundation/components/_dropdown.scss +7 -3
  42. data/scss/foundation/components/_flex-video.scss +1 -1
  43. data/scss/foundation/components/_forms.scss +49 -25
  44. data/scss/foundation/components/_global.scss +222 -3
  45. data/scss/foundation/components/_grid.scss +40 -24
  46. data/scss/foundation/components/_inline-lists.scss +1 -1
  47. data/scss/foundation/components/_joyride.scss +4 -6
  48. data/scss/foundation/components/_keystrokes.scss +1 -1
  49. data/scss/foundation/components/_labels.scss +5 -3
  50. data/scss/foundation/components/_magellan.scss +1 -1
  51. data/scss/foundation/components/_orbit.scss +13 -8
  52. data/scss/foundation/components/_pagination.scss +1 -1
  53. data/scss/foundation/components/_panels.scss +1 -1
  54. data/scss/foundation/components/_pricing-tables.scss +1 -1
  55. data/scss/foundation/components/_progress-bars.scss +1 -1
  56. data/scss/foundation/components/_reveal.scss +7 -7
  57. data/scss/foundation/components/_section.scss +75 -21
  58. data/scss/foundation/components/_side-nav.scss +1 -1
  59. data/scss/foundation/components/_split-buttons.scss +10 -3
  60. data/scss/foundation/components/_sub-nav.scss +1 -1
  61. data/scss/foundation/components/_switch.scss +1 -1
  62. data/scss/foundation/components/_thumbs.scss +3 -1
  63. data/scss/foundation/components/_top-bar.scss +8 -6
  64. data/scss/foundation/components/_visibility.scss +1 -1
  65. data/scss/normalize.scss +13 -7
  66. data/templates/project/manifest.rb +2 -11
  67. data/templates/project/scss/app.scss +0 -1
  68. metadata +5 -7
  69. data/scss/foundation/_foundation-global.scss +0 -198
  70. data/templates/project/scss/normalize.scss +0 -396
@@ -6,7 +6,7 @@
6
6
  Foundation.libs.clearing = {
7
7
  name : 'clearing',
8
8
 
9
- version : '4.1.2',
9
+ version : '4.1.3',
10
10
 
11
11
  settings : {
12
12
  templates : {
@@ -101,7 +101,7 @@
101
101
  function (e) { this.keydown(e) }.bind(this));
102
102
 
103
103
  $(window).on('resize.fndtn.clearing',
104
- function (e) { this.resize() }.bind(this));
104
+ function () { this.resize() }.bind(this));
105
105
 
106
106
  this.settings.init = true;
107
107
  return this;
@@ -214,7 +214,7 @@
214
214
  }($(el))), container, visible_image;
215
215
 
216
216
  if (el === e.target && root) {
217
- container = root.find('div').first(),
217
+ container = root.find('div').first();
218
218
  visible_image = container.find('.visible-img');
219
219
  this.settings.prev_index = 0;
220
220
  root.find('ul[data-clearing]')
@@ -317,7 +317,11 @@
317
317
  // image loading and preloading
318
318
 
319
319
  load : function ($image) {
320
- var href = $image.parent().attr('href');
320
+ if ($image[0].nodeName === "A") {
321
+ var href = $image.attr('href');
322
+ } else {
323
+ var href = $image.parent().attr('href');
324
+ }
321
325
 
322
326
  this.preload($image);
323
327
 
@@ -6,10 +6,12 @@
6
6
  Foundation.libs.dropdown = {
7
7
  name : 'dropdown',
8
8
 
9
- version : '4.1.0',
9
+ version : '4.1.3',
10
10
 
11
11
  settings : {
12
- activeClass: 'open'
12
+ activeClass: 'open',
13
+ opened: function(){},
14
+ closed: function(){}
13
15
  },
14
16
 
15
17
  init : function (scope, method, options) {
@@ -35,10 +37,13 @@
35
37
  events : function () {
36
38
  var self = this;
37
39
 
38
- $(this.scope).on('click.fndtn.dropdown', '[data-dropdown]', function (e) {
39
- e.preventDefault();
40
- self.toggle($(this));
41
- });
40
+ $(this.scope)
41
+ .on('click.fndtn.dropdown', '[data-dropdown]', function (e) {
42
+ e.preventDefault();
43
+ self.toggle($(this));
44
+ })
45
+ .on('opened.fndtn.dropdown', '[data-dropdown-content]', this.settings.opened)
46
+ .on('closed.fndtn.dropdown', '[data-dropdown-content]', this.settings.closed);
42
47
 
43
48
  $('body').on('click.fndtn.dropdown', function (e) {
44
49
  var parent = $(e.target).closest('[data-dropdown-content]');
@@ -51,9 +56,7 @@
51
56
  return;
52
57
  }
53
58
 
54
- $('[data-dropdown-content]')
55
- .css(Foundation.rtl ? 'right':'left', '-99999px')
56
- .removeClass(self.settings.activeClass);
59
+ self.close.call(self, $('[data-dropdown-content]'));
57
60
  });
58
61
 
59
62
  $(window).on('resize.fndtn.dropdown', self.throttle(function () {
@@ -63,22 +66,34 @@
63
66
  this.settings.init = true;
64
67
  },
65
68
 
66
- toggle : function (target, resize) {
69
+ close: function (dropdown) {
70
+ var self = this;
71
+ dropdown.each(function () {
72
+ if ($(this).hasClass(self.settings.activeClass)) {
73
+ $(this)
74
+ .css(Foundation.rtl ? 'right':'left', '-99999px')
75
+ .removeClass(self.settings.activeClass);
76
+ $(this).trigger('closed');
77
+ }
78
+ });
79
+ },
80
+
81
+ open: function (dropdown, target) {
82
+ this
83
+ .css(dropdown
84
+ .addClass(this.settings.activeClass), target);
85
+ dropdown.trigger('opened');
86
+ },
87
+
88
+ toggle : function (target) {
67
89
  var dropdown = $('#' + target.data('dropdown'));
68
90
 
69
- $('[data-dropdown-content]')
70
- .not(dropdown)
71
- .css(Foundation.rtl ? 'right':'left', '-99999px')
72
- .removeClass(this.settings.activeClass);
91
+ this.close.call(this, $('[data-dropdown-content]').not(dropdown));
73
92
 
74
93
  if (dropdown.hasClass(this.settings.activeClass)) {
75
- dropdown
76
- .css(Foundation.rtl ? 'right':'left', '-99999px')
77
- .removeClass(this.settings.activeClass);
94
+ this.close.call(this, dropdown);
78
95
  } else {
79
- this
80
- .css(dropdown
81
- .addClass(this.settings.activeClass), target);
96
+ this.open.call(this, dropdown, target);
82
97
  }
83
98
  },
84
99
 
@@ -92,9 +107,14 @@
92
107
  },
93
108
 
94
109
  css : function (dropdown, target) {
95
- var position = target.position();
96
- position.top += target.offsetParent().offset().top;
97
- position.left += target.offsetParent().offset().left;
110
+ // temporary workaround until 4.2
111
+ if (/body/i.test(dropdown.offsetParent()[0].nodeName)) {
112
+ var position = target.offset();
113
+ position.top -= dropdown.offsetParent().offset().top;
114
+ position.left -= dropdown.offsetParent().offset().left;
115
+ } else {
116
+ var position = target.position();
117
+ }
98
118
 
99
119
  if (this.small()) {
100
120
  dropdown.css({
@@ -37,7 +37,9 @@
37
37
  .each(this.append_custom_markup);
38
38
  $('form.custom input[type="checkbox"]', $(this.scope)).not('[data-customforms="disabled"]')
39
39
  .each(this.append_custom_markup);
40
- $('form.custom select', $(this.scope)).not('[data-customforms="disabled"]')
40
+ $('form.custom select', $(this.scope))
41
+ .not('[data-customforms="disabled"]')
42
+ .not('[multiple=multiple]')
41
43
  .each(this.append_custom_select);
42
44
  },
43
45
 
@@ -179,7 +181,7 @@
179
181
  },
180
182
 
181
183
  append_custom_markup : function (idx, sel) {
182
- var $this = $(sel).hide(),
184
+ var $this = $(sel).addClass('hidden-field'),
183
185
  type = $this.attr('type'),
184
186
  $span = $this.next('span.custom.' + type);
185
187
 
@@ -222,7 +224,7 @@
222
224
  $currentSelect = $customSelect.prepend('<a href="#" class="current">' + $selectedOption.html() + '</a>' ).find( ".current" );
223
225
  $this
224
226
  .after( $customSelect )
225
- .hide();
227
+ .addClass('hidden-field');
226
228
 
227
229
  } else {
228
230
  liHtml = $options.map(function() {
@@ -338,7 +338,7 @@
338
338
  return Modernizr.mq('only screen and (max-width: 767px)') || $('.lt-ie9').length > 0;
339
339
  }
340
340
 
341
- return (this.settings.$window.width() < 767) ? true : false;
341
+ return (this.settings.$window.width() < 767);
342
342
  },
343
343
 
344
344
  hide : function () {
@@ -399,11 +399,7 @@
399
399
  },
400
400
 
401
401
  paused : function () {
402
- if (($.inArray((this.settings.$li.index() + 1), this.settings.pauseAfter) === -1)) {
403
- return true;
404
- }
405
-
406
- return false;
402
+ return ($.inArray((this.settings.$li.index() + 1), this.settings.pauseAfter) === -1);
407
403
  },
408
404
 
409
405
  restart : function () {
@@ -13,21 +13,22 @@
13
13
  // See http://docs.jquery.com/Using_jQuery_with_Other_Libraries
14
14
  // and http://zeptojs.com/
15
15
  var libFuncName = null;
16
+
16
17
  if (typeof jQuery === "undefined" &&
17
18
  typeof Zepto === "undefined" &&
18
19
  typeof $ === "function") {
19
- libFuncName = $;
20
+ libFuncName = $;
20
21
  } else if (typeof jQuery === "function") {
21
- libFuncName = jQuery;
22
+ libFuncName = jQuery;
22
23
  } else if (typeof Zepto === "function") {
23
- libFuncName = Zepto;
24
+ libFuncName = Zepto;
24
25
  } else {
25
- throw new TypeError();
26
+ throw new TypeError();
26
27
  }
27
28
 
28
- (function ($) {
29
+ (function ($, window, document, undefined) {
30
+ 'use strict';
29
31
 
30
- (function () {
31
32
  // add dusty browser stuff
32
33
  if (!Array.prototype.filter) {
33
34
  Array.prototype.filter = function(fun /*, thisp */) {
@@ -36,17 +37,13 @@ if (typeof jQuery === "undefined" &&
36
37
  if (this == null) {
37
38
  throw new TypeError();
38
39
  }
39
-
40
+
40
41
  var t = Object(this),
41
42
  len = t.length >>> 0;
42
43
  if (typeof fun != "function") {
43
- try {
44
- throw new TypeError();
45
- } catch (e) {
46
44
  return;
47
- }
48
45
  }
49
-
46
+
50
47
  var res = [],
51
48
  thisp = arguments[1];
52
49
  for (var i = 0; i < len; i++) {
@@ -57,32 +54,65 @@ if (typeof jQuery === "undefined" &&
57
54
  }
58
55
  }
59
56
  }
60
-
57
+
61
58
  return res;
59
+ }
60
+ }
61
+
62
+ if (!Function.prototype.bind) {
63
+ Function.prototype.bind = function (oThis) {
64
+ if (typeof this !== "function") {
65
+ // closest thing possible to the ECMAScript 5 internal IsCallable function
66
+ throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
67
+ }
68
+
69
+ var aArgs = Array.prototype.slice.call(arguments, 1),
70
+ fToBind = this,
71
+ fNOP = function () {},
72
+ fBound = function () {
73
+ return fToBind.apply(this instanceof fNOP && oThis
74
+ ? this
75
+ : oThis,
76
+ aArgs.concat(Array.prototype.slice.call(arguments)));
77
+ };
78
+
79
+ fNOP.prototype = this.prototype;
80
+ fBound.prototype = new fNOP();
81
+
82
+ return fBound;
62
83
  };
84
+ }
63
85
 
64
- if (!Function.prototype.bind) {
65
- Function.prototype.bind = function (oThis) {
66
- if (typeof this !== "function") {
67
- // closest thing possible to the ECMAScript 5 internal IsCallable function
68
- throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
86
+ if (!Array.prototype.indexOf) {
87
+ Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
88
+ "use strict";
89
+ if (this == null) {
90
+ throw new TypeError();
91
+ }
92
+ var t = Object(this);
93
+ var len = t.length >>> 0;
94
+ if (len === 0) {
95
+ return -1;
96
+ }
97
+ var n = 0;
98
+ if (arguments.length > 1) {
99
+ n = Number(arguments[1]);
100
+ if (n != n) { // shortcut for verifying if it's NaN
101
+ n = 0;
102
+ } else if (n != 0 && n != Infinity && n != -Infinity) {
103
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
69
104
  }
70
-
71
- var aArgs = Array.prototype.slice.call(arguments, 1),
72
- fToBind = this,
73
- fNOP = function () {},
74
- fBound = function () {
75
- return fToBind.apply(this instanceof fNOP && oThis
76
- ? this
77
- : oThis,
78
- aArgs.concat(Array.prototype.slice.call(arguments)));
79
- };
80
-
81
- fNOP.prototype = this.prototype;
82
- fBound.prototype = new fNOP();
83
-
84
- return fBound;
85
- };
105
+ }
106
+ if (n >= len) {
107
+ return -1;
108
+ }
109
+ var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
110
+ for (; k < len; k++) {
111
+ if (k in t && t[k] === searchElement) {
112
+ return k;
113
+ }
114
+ }
115
+ return -1;
86
116
  }
87
117
  }
88
118
 
@@ -90,15 +120,11 @@ if (typeof jQuery === "undefined" &&
90
120
  $.fn.stop = $.fn.stop || function() {
91
121
  return this;
92
122
  };
93
- }());
94
-
95
- ;(function (window, document, undefined) {
96
- 'use strict';
97
123
 
98
124
  window.Foundation = {
99
125
  name : 'Foundation',
100
126
 
101
- version : '4.1.0',
127
+ version : '4.1.5',
102
128
 
103
129
  // global Foundation cache object
104
130
  cache : {},
@@ -108,12 +134,11 @@ if (typeof jQuery === "undefined" &&
108
134
  args = [scope, method, options, response],
109
135
  responses = [],
110
136
  nc = nc || false;
111
-
137
+
112
138
  // disable library error catching,
113
139
  // used for development only
114
140
  if (nc) this.nc = nc;
115
141
 
116
-
117
142
  // check RTL
118
143
  this.rtl = /rtl/i.test($('html').attr('dir'));
119
144
 
@@ -197,11 +222,11 @@ if (typeof jQuery === "undefined" &&
197
222
 
198
223
  random_str : function (length) {
199
224
  var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
200
-
225
+
201
226
  if (!length) {
202
227
  length = Math.floor(Math.random() * chars.length);
203
228
  }
204
-
229
+
205
230
  var str = '';
206
231
  for (var i = 0; i < length; i++) {
207
232
  str += chars[Math.floor(Math.random() * chars.length)];
@@ -362,7 +387,7 @@ if (typeof jQuery === "undefined" &&
362
387
  return jQuery;
363
388
  }
364
389
  }()
365
- },
390
+ };
366
391
 
367
392
  $.fn.foundation = function () {
368
393
  var args = Array.prototype.slice.call(arguments, 0);
@@ -373,6 +398,4 @@ if (typeof jQuery === "undefined" &&
373
398
  });
374
399
  };
375
400
 
376
- }(this, this.document));
377
-
378
- })(libFuncName);
401
+ }(libFuncName, this, this.document));
@@ -13,6 +13,8 @@
13
13
  animation_speed: 500,
14
14
  bullets: true,
15
15
  stack_on_small: true,
16
+ navigation_arrows: true,
17
+ slide_number: true,
16
18
  container_class: 'orbit-container',
17
19
  stack_on_small_class: 'orbit-stack-on-small',
18
20
  next_class: 'orbit-next',
@@ -97,13 +99,17 @@
97
99
 
98
100
  $.extend(true, self.settings, self.data_options($slides_container));
99
101
 
100
- $container.append(self._prev_html());
101
- $container.append(self._next_html());
102
+ if (self.settings.navigation_arrows) {
103
+ $container.append(self._prev_html());
104
+ $container.append(self._next_html());
105
+ }
102
106
  $slides_container.addClass(self.settings.slides_container_class);
103
107
  if (self.settings.stack_on_small) {
104
108
  $container.addClass(self.settings.stack_on_small_class);
105
109
  }
106
- $container.append(self._slide_number_html(1, $slides.length));
110
+ if (self.settings.slide_number) {
111
+ $container.append(self._slide_number_html(1, $slides.length));
112
+ }
107
113
  $container.append(self._timer_html());
108
114
  if (self.settings.bullets) {
109
115
  $container.after(self._bullets_container_html($slides));
@@ -261,7 +267,7 @@
261
267
  $container = $slides_container.parent(),
262
268
  $timer = $container.find('.' + self.settings.timer_container_class),
263
269
  $progress = $timer.find('.' + self.settings.timer_progress_class),
264
- progress_pct = $progress.width() / $timer.width()
270
+ progress_pct = $progress.width() / $timer.width();
265
271
  self._rebuild_timer($container, progress_pct * 100 + '%');
266
272
  // $progress.stop();
267
273
  $slides_container.trigger('orbit:timer-stopped');
@@ -6,7 +6,7 @@
6
6
  Foundation.libs.reveal = {
7
7
  name: 'reveal',
8
8
 
9
- version : '4.1.2',
9
+ version : '4.1.3',
10
10
 
11
11
  locked : false,
12
12
 
@@ -69,6 +69,11 @@
69
69
  .on('click.fndtn.reveal touchend.click.fndtn.reveal', this.close_targets(), function (e) {
70
70
  e.preventDefault();
71
71
  if (!self.locked) {
72
+ var settings = $.extend({}, self.settings, self.data_options($('.reveal-modal.open')));
73
+ if ($(e.target)[0] === $('.' + settings.bgClass)[0] && !settings.closeOnBackgroundClick) {
74
+ return;
75
+ }
76
+
72
77
  self.locked = true;
73
78
  self.close.call(self, $(this).closest('.reveal-modal'));
74
79
  }
@@ -103,7 +108,7 @@
103
108
  if (open_modal.length < 1) {
104
109
  this.toggle_bg(modal);
105
110
  }
106
- this.hide(open_modal, this.settings.css.open);
111
+ this.hide(open_modal, this.settings.css.close);
107
112
  this.show(modal, this.settings.css.open);
108
113
  }
109
114
  },
@@ -152,7 +157,7 @@
152
157
  var end_css = {
153
158
  top: $(window).scrollTop() + el.data('css-top') + 'px',
154
159
  opacity: 1
155
- }
160
+ };
156
161
 
157
162
  return this.delay(function () {
158
163
  return el