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,15 +4,15 @@
4
4
  Foundation.libs.tooltip = {
5
5
  name : 'tooltip',
6
6
 
7
- version : '5.4.7',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
10
  additional_inheritable_classes : [],
11
11
  tooltip_class : '.tooltip',
12
- append_to: 'body',
13
- touch_close_text: 'Tap To Close',
14
- disable_for_touch: false,
15
- hover_delay: 200,
12
+ append_to : 'body',
13
+ touch_close_text : 'Tap To Close',
14
+ disable_for_touch : false,
15
+ hover_delay : 200,
16
16
  show_on : 'all',
17
17
  tip_template : function (selector, content) {
18
18
  return '<span data-selector="' + selector + '" id="' + selector + '" class="'
@@ -28,7 +28,7 @@
28
28
  this.bindings(method, options);
29
29
  },
30
30
 
31
- should_show: function (target, tip) {
31
+ should_show : function (target, tip) {
32
32
  var settings = $.extend({}, this.settings, this.data_options(target));
33
33
 
34
34
  if (settings.show_on === 'all') {
@@ -57,6 +57,31 @@
57
57
 
58
58
  self.create(this.S(instance));
59
59
 
60
+ function _startShow(elt, $this, immediate) {
61
+ if (elt.timer) {
62
+ return;
63
+ }
64
+
65
+ if (immediate) {
66
+ elt.timer = null;
67
+ self.showTip($this);
68
+ } else {
69
+ elt.timer = setTimeout(function () {
70
+ elt.timer = null;
71
+ self.showTip($this);
72
+ }.bind(elt), self.settings.hover_delay);
73
+ }
74
+ }
75
+
76
+ function _startHide(elt, $this) {
77
+ if (elt.timer) {
78
+ clearTimeout(elt.timer);
79
+ elt.timer = null;
80
+ }
81
+
82
+ self.hide($this);
83
+ }
84
+
60
85
  $(this.scope)
61
86
  .off('.tooltip')
62
87
  .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
@@ -69,46 +94,54 @@
69
94
  return false;
70
95
  }
71
96
 
72
- if (/mouse/i.test(e.type) && self.ie_touch(e)) return false;
73
-
97
+ if (/mouse/i.test(e.type) && self.ie_touch(e)) {
98
+ return false;
99
+ }
100
+
74
101
  if ($this.hasClass('open')) {
75
- if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) e.preventDefault();
102
+ if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
103
+ e.preventDefault();
104
+ }
76
105
  self.hide($this);
77
106
  } else {
78
107
  if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
79
108
  return;
80
- } else if(!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
109
+ } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
81
110
  e.preventDefault();
82
111
  S(settings.tooltip_class + '.open').hide();
83
112
  is_touch = true;
113
+ // close other open tooltips on touch
114
+ if ($('.open[' + self.attr_name() + ']').length > 0) {
115
+ var prevOpen = S($('.open[' + self.attr_name() + ']')[0]);
116
+ self.hide(prevOpen);
117
+ }
84
118
  }
85
119
 
86
120
  if (/enter|over/i.test(e.type)) {
87
- this.timer = setTimeout(function () {
88
- var tip = self.showTip($this);
89
- }.bind(this), self.settings.hover_delay);
121
+ _startShow(this, $this);
122
+
90
123
  } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
91
- clearTimeout(this.timer);
92
- self.hide($this);
124
+ _startHide(this, $this);
93
125
  } else {
94
- self.showTip($this);
126
+ _startShow(this, $this, true);
95
127
  }
96
128
  }
97
129
  })
98
130
  .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
99
- if (/mouse/i.test(e.type) && self.ie_touch(e)) return false;
131
+ if (/mouse/i.test(e.type) && self.ie_touch(e)) {
132
+ return false;
133
+ }
100
134
 
101
- if($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
135
+ if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
102
136
  return;
103
- }
104
- else if($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
137
+ } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
105
138
  self.convert_to_touch($(this));
106
139
  } else {
107
- self.hide($(this));
140
+ _startHide(this, $(this));
108
141
  }
109
142
  })
110
143
  .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
111
- self.hide(S(this));
144
+ _startHide(this, S(this));
112
145
  });
113
146
  },
114
147
 
@@ -119,7 +152,7 @@
119
152
 
120
153
  showTip : function ($target) {
121
154
  var $tip = this.getTip($target);
122
- if (this.should_show($target, $tip)){
155
+ if (this.should_show($target, $tip)) {
123
156
  return this.show($target);
124
157
  }
125
158
  return;
@@ -138,17 +171,16 @@
138
171
  },
139
172
 
140
173
  selector : function ($target) {
141
- var id = $target.attr('id'),
142
- dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
174
+ var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
143
175
 
144
- if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
176
+ if (typeof dataSelector != 'string') {
145
177
  dataSelector = this.random_str(6);
146
178
  $target
147
179
  .attr('data-selector', dataSelector)
148
180
  .attr('aria-describedby', dataSelector);
149
181
  }
150
182
 
151
- return (id && id.length > 0) ? id : dataSelector;
183
+ return dataSelector;
152
184
  },
153
185
 
154
186
  create : function ($target) {
@@ -166,13 +198,13 @@
166
198
  $tip.addClass(classes).appendTo(settings.append_to);
167
199
 
168
200
  if (Modernizr.touch) {
169
- $tip.append('<span class="tap-to-close">'+settings.touch_close_text+'</span>');
170
- $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function(e) {
201
+ $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
202
+ $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
171
203
  self.hide($target);
172
204
  });
173
205
  }
174
206
 
175
- $target.removeAttr('title').attr('title','');
207
+ $target.removeAttr('title').attr('title', '');
176
208
  },
177
209
 
178
210
  reposition : function (target, tip, classes) {
@@ -186,7 +218,7 @@
186
218
  nubWidth = nub.outerHeight();
187
219
 
188
220
  if (this.small()) {
189
- tip.css({'width' : '100%' });
221
+ tip.css({'width' : '100%'});
190
222
  } else {
191
223
  tip.css({'width' : (width) ? width : 'auto'});
192
224
  }
@@ -212,10 +244,18 @@
212
244
  nub.addClass('rtl');
213
245
  left = target.offset().left + target.outerWidth() - tip.outerWidth();
214
246
  }
247
+
215
248
  objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left);
249
+ // reset nub from small styles, if they've been applied
250
+ if (nub.attr('style')) {
251
+ nub.removeAttr('style');
252
+ }
253
+
216
254
  tip.removeClass('tip-override');
217
255
  if (classes && classes.indexOf('tip-top') > -1) {
218
- if (Foundation.rtl) nub.addClass('rtl');
256
+ if (Foundation.rtl) {
257
+ nub.addClass('rtl');
258
+ }
219
259
  objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left)
220
260
  .removeClass('tip-override');
221
261
  } else if (classes && classes.indexOf('tip-left') > -1) {
@@ -250,14 +290,14 @@
250
290
  return $.trim(filtered);
251
291
  },
252
292
 
253
- convert_to_touch : function($target) {
293
+ convert_to_touch : function ($target) {
254
294
  var self = this,
255
295
  $tip = self.getTip($target),
256
296
  settings = $.extend({}, self.settings, self.data_options($target));
257
297
 
258
298
  if ($tip.find('.tap-to-close').length === 0) {
259
- $tip.append('<span class="tap-to-close">'+settings.touch_close_text+'</span>');
260
- $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function(e) {
299
+ $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
300
+ $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
261
301
  self.hide($target);
262
302
  });
263
303
  }
@@ -279,8 +319,7 @@
279
319
 
280
320
  hide : function ($target) {
281
321
  var $tip = this.getTip($target);
282
-
283
- $tip.fadeOut(150, function() {
322
+ $tip.fadeOut(150, function () {
284
323
  $tip.find('.tap-to-close').remove();
285
324
  $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
286
325
  $target.removeClass('open');
@@ -4,17 +4,19 @@
4
4
  Foundation.libs.topbar = {
5
5
  name : 'topbar',
6
6
 
7
- version: '5.4.7',
7
+ version : '5.5.2',
8
8
 
9
9
  settings : {
10
10
  index : 0,
11
+ start_offset : 0,
11
12
  sticky_class : 'sticky',
12
- custom_back_text: true,
13
- back_text: 'Back',
14
- mobile_show_parent_link: true,
15
- is_hover: true,
13
+ custom_back_text : true,
14
+ back_text : 'Back',
15
+ mobile_show_parent_link : true,
16
+ is_hover : true,
16
17
  scrolltop : true, // jump to top when sticky nav menu toggle is clicked
17
- sticky_on : 'all'
18
+ sticky_on : 'all',
19
+ dropdown_autoclose: true
18
20
  },
19
21
 
20
22
  init : function (section, method, options) {
@@ -60,29 +62,29 @@
60
62
 
61
63
  },
62
64
 
63
- is_sticky: function (topbar, topbarContainer, settings) {
64
- var sticky = topbarContainer.hasClass(settings.sticky_class);
65
+ is_sticky : function (topbar, topbarContainer, settings) {
66
+ var sticky = topbarContainer.hasClass(settings.sticky_class);
67
+ var smallMatch = matchMedia(Foundation.media_queries.small).matches;
68
+ var medMatch = matchMedia(Foundation.media_queries.medium).matches;
69
+ var lrgMatch = matchMedia(Foundation.media_queries.large).matches;
65
70
 
66
71
  if (sticky && settings.sticky_on === 'all') {
67
72
  return true;
68
- } else if (sticky && this.small() && settings.sticky_on === 'small') {
69
- return (matchMedia(Foundation.media_queries.small).matches && !matchMedia(Foundation.media_queries.medium).matches &&
70
- !matchMedia(Foundation.media_queries.large).matches);
71
- //return true;
72
- } else if (sticky && this.medium() && settings.sticky_on === 'medium') {
73
- return (matchMedia(Foundation.media_queries.small).matches && matchMedia(Foundation.media_queries.medium).matches &&
74
- !matchMedia(Foundation.media_queries.large).matches);
75
- //return true;
76
- } else if(sticky && this.large() && settings.sticky_on === 'large') {
77
- return (matchMedia(Foundation.media_queries.small).matches && matchMedia(Foundation.media_queries.medium).matches &&
78
- matchMedia(Foundation.media_queries.large).matches);
79
- //return true;
73
+ }
74
+ if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
75
+ if (smallMatch && !medMatch && !lrgMatch) { return true; }
76
+ }
77
+ if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
78
+ if (smallMatch && medMatch && !lrgMatch) { return true; }
79
+ }
80
+ if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
81
+ if (smallMatch && medMatch && lrgMatch) { return true; }
80
82
  }
81
83
 
82
- return false;
84
+ return false;
83
85
  },
84
86
 
85
- toggle: function (toggleEl) {
87
+ toggle : function (toggleEl) {
86
88
  var self = this,
87
89
  topbar;
88
90
 
@@ -98,11 +100,11 @@
98
100
 
99
101
  if (self.breakpoint()) {
100
102
  if (!self.rtl) {
101
- section.css({left: '0%'});
102
- $('>.name', section).css({left: '100%'});
103
+ section.css({left : '0%'});
104
+ $('>.name', section).css({left : '100%'});
103
105
  } else {
104
- section.css({right: '0%'});
105
- $('>.name', section).css({right: '100%'});
106
+ section.css({right : '0%'});
107
+ $('>.name', section).css({right : '100%'});
106
108
  }
107
109
 
108
110
  self.S('li.moved', section).removeClass('moved');
@@ -126,7 +128,7 @@
126
128
  topbar.addClass('fixed');
127
129
  self.S('body').removeClass('f-topbar-fixed');
128
130
 
129
- window.scrollTo(0,0);
131
+ window.scrollTo(0, 0);
130
132
  } else {
131
133
  topbar.parent().removeClass('expanded');
132
134
  }
@@ -162,12 +164,19 @@
162
164
  e.preventDefault();
163
165
  self.toggle(this);
164
166
  })
165
- .on('click.fndtn.topbar','.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]',function (e) {
166
- var li = $(this).closest('li');
167
- if(self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown'))
168
- {
169
- self.toggle();
167
+ .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
168
+ var li = $(this).closest('li'),
169
+ topbar = li.closest('[' + self.attr_name() + ']'),
170
+ settings = topbar.data(self.attr_name(true) + '-init');
171
+
172
+ if (settings.dropdown_autoclose && settings.is_hover) {
173
+ var hoverLi = $(this).closest('.hover');
174
+ hoverLi.removeClass('hover');
170
175
  }
176
+ if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
177
+ self.toggle();
178
+ }
179
+
171
180
  })
172
181
  .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
173
182
  var li = S(this),
@@ -175,13 +184,18 @@
175
184
  topbar = li.closest('[' + self.attr_name() + ']'),
176
185
  settings = topbar.data(self.attr_name(true) + '-init');
177
186
 
178
- if(target.data('revealId')) {
187
+ if (target.data('revealId')) {
179
188
  self.toggle();
180
189
  return;
181
190
  }
182
191
 
183
- if (self.breakpoint()) return;
184
- if (settings.is_hover && !Modernizr.touch) return;
192
+ if (self.breakpoint()) {
193
+ return;
194
+ }
195
+
196
+ if (settings.is_hover && !Modernizr.touch) {
197
+ return;
198
+ }
185
199
 
186
200
  e.stopImmediatePropagation();
187
201
 
@@ -218,22 +232,22 @@
218
232
  $selectedLi.addClass('moved');
219
233
 
220
234
  if (!self.rtl) {
221
- section.css({left: -(100 * topbar.data('index')) + '%'});
222
- section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
235
+ section.css({left : -(100 * topbar.data('index')) + '%'});
236
+ section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
223
237
  } else {
224
- section.css({right: -(100 * topbar.data('index')) + '%'});
225
- section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
238
+ section.css({right : -(100 * topbar.data('index')) + '%'});
239
+ section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
226
240
  }
227
241
 
228
242
  topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
229
243
  }
230
244
  });
231
245
 
232
- S(window).off(".topbar").on("resize.fndtn.topbar", self.throttle(function() {
246
+ S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
233
247
  self.resize.call(self);
234
- }, 50)).trigger("resize").trigger("resize.fndtn.topbar").load(function(){
248
+ }, 50)).trigger('resize.fndtn.topbar').load(function () {
235
249
  // Ensure that the offset is calculated after all of the pages resources have loaded
236
- S(this).trigger("resize.fndtn.topbar");
250
+ S(this).trigger('resize.fndtn.topbar');
237
251
  });
238
252
 
239
253
  S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
@@ -260,11 +274,11 @@
260
274
  topbar.data('index', topbar.data('index') - 1);
261
275
 
262
276
  if (!self.rtl) {
263
- section.css({left: -(100 * topbar.data('index')) + '%'});
264
- section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
277
+ section.css({left : -(100 * topbar.data('index')) + '%'});
278
+ section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
265
279
  } else {
266
- section.css({right: -(100 * topbar.data('index')) + '%'});
267
- section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
280
+ section.css({right : -(100 * topbar.data('index')) + '%'});
281
+ section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
268
282
  }
269
283
 
270
284
  if (topbar.data('index') === 0) {
@@ -280,10 +294,10 @@
280
294
 
281
295
  // Show dropdown menus when their items are focused
282
296
  S(this.scope).find('.dropdown a')
283
- .focus(function() {
297
+ .focus(function () {
284
298
  $(this).parents('.has-dropdown').addClass('hover');
285
299
  })
286
- .blur(function() {
300
+ .blur(function () {
287
301
  $(this).parents('.has-dropdown').removeClass('hover');
288
302
  });
289
303
  },
@@ -305,18 +319,18 @@
305
319
  .find('li')
306
320
  .removeClass('hover');
307
321
 
308
- if(doToggle) {
322
+ if (doToggle) {
309
323
  self.toggle(topbar);
310
324
  }
311
325
  }
312
326
 
313
- if(self.is_sticky(topbar, stickyContainer, settings)) {
314
- if(stickyContainer.hasClass('fixed')) {
327
+ if (self.is_sticky(topbar, stickyContainer, settings)) {
328
+ if (stickyContainer.hasClass('fixed')) {
315
329
  // Remove the fixed to allow for correct calculation of the offset.
316
330
  stickyContainer.removeClass('fixed');
317
331
 
318
332
  stickyOffset = stickyContainer.offset().top;
319
- if(self.S(document.body).hasClass('f-topbar-fixed')) {
333
+ if (self.S(document.body).hasClass('f-topbar-fixed')) {
320
334
  stickyOffset -= topbar.data('height');
321
335
  }
322
336
 
@@ -361,11 +375,10 @@
361
375
  url = $link.attr('href'),
362
376
  $titleLi;
363
377
 
364
-
365
378
  if (!$dropdown.find('.title.back').length) {
366
379
 
367
380
  if (settings.mobile_show_parent_link == true && url) {
368
- $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link show-for-small"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
381
+ $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
369
382
  } else {
370
383
  $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
371
384
  }
@@ -390,7 +403,7 @@
390
403
  },
391
404
 
392
405
  assembled : function (topbar) {
393
- topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled: true}));
406
+ topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
394
407
  },
395
408
 
396
409
  height : function (ul) {
@@ -407,18 +420,18 @@
407
420
  sticky : function () {
408
421
  var self = this;
409
422
 
410
- this.S(window).on('scroll', function() {
423
+ this.S(window).on('scroll', function () {
411
424
  self.update_sticky_positioning();
412
425
  });
413
426
  },
414
427
 
415
- update_sticky_positioning: function() {
428
+ update_sticky_positioning : function () {
416
429
  var klass = '.' + this.settings.sticky_class,
417
430
  $window = this.S(window),
418
431
  self = this;
419
432
 
420
433
  if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {
421
- var distance = this.settings.sticky_topbar.data('stickyoffset');
434
+ var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset;
422
435
  if (!self.S(klass).hasClass('expanded')) {
423
436
  if ($window.scrollTop() > (distance)) {
424
437
  if (!self.S(klass).hasClass('fixed')) {