foundation-rails 5.4.1.0 → 5.4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/bower.json +2 -2
  2. data/lib/foundation/rails/version.rb +1 -1
  3. data/vendor/assets/_settings.scss +2 -3
  4. data/vendor/assets/javascripts/foundation/foundation.abide.js +23 -9
  5. data/vendor/assets/javascripts/foundation/foundation.accordion.js +1 -1
  6. data/vendor/assets/javascripts/foundation/foundation.alert.js +2 -2
  7. data/vendor/assets/javascripts/foundation/foundation.clearing.js +1 -1
  8. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +7 -1
  9. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +1 -1
  10. data/vendor/assets/javascripts/foundation/foundation.interchange.js +1 -1
  11. data/vendor/assets/javascripts/foundation/foundation.joyride.js +1 -1
  12. data/vendor/assets/javascripts/foundation/foundation.js +1 -1
  13. data/vendor/assets/javascripts/foundation/foundation.magellan.js +1 -1
  14. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +18 -5
  15. data/vendor/assets/javascripts/foundation/foundation.orbit.js +1 -1
  16. data/vendor/assets/javascripts/foundation/foundation.reveal.js +1 -1
  17. data/vendor/assets/javascripts/foundation/foundation.slider.js +10 -1
  18. data/vendor/assets/javascripts/foundation/foundation.tab.js +73 -10
  19. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +6 -4
  20. data/vendor/assets/javascripts/foundation/foundation.topbar.js +10 -1
  21. data/vendor/assets/stylesheets/foundation/_settings.scss +2 -3
  22. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +1 -1
  23. data/vendor/assets/stylesheets/foundation/components/_forms.scss +34 -9
  24. data/vendor/assets/stylesheets/foundation/components/_global.scss +3 -4
  25. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +6 -2
  26. data/vendor/assets/stylesheets/foundation/components/_range-slider.scss +8 -3
  27. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +10 -10
  28. data/vendor/assets/stylesheets/foundation/components/_side-nav.scss +1 -0
  29. data/vendor/assets/stylesheets/foundation/components/_switches.scss +10 -3
  30. data/vendor/assets/stylesheets/foundation/components/_tables.scss +2 -2
  31. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +19 -6
  32. metadata +4 -4
data/bower.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "foundation-rails",
3
- "version": "5.4.1.0",
3
+ "version": "5.4.2.0",
4
4
  "dependencies": {
5
- "foundation": "5.4.1"
5
+ "foundation": "5.4.2"
6
6
  }
7
7
  }
@@ -1,5 +1,5 @@
1
1
  module Foundation
2
2
  module Rails
3
- VERSION = "5.4.1.0"
3
+ VERSION = "5.4.2.0"
4
4
  end
5
5
  end
@@ -100,7 +100,6 @@ $include-html-global-classes: $include-html-classes;
100
100
  // $body-bg: $white;
101
101
  // $body-font-color: $jet;
102
102
  // $body-font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
103
- // $font-weight-normal:normal;
104
103
  // $body-font-weight: $font-weight-normal;
105
104
  // $body-font-style: normal;
106
105
 
@@ -803,8 +802,6 @@ $include-html-global-classes: $include-html-classes;
803
802
 
804
803
  // $include-html-off-canvas-classes: $include-html-classes;
805
804
 
806
- // $include-html-off-canvas-classes: $include-html-classes;
807
-
808
805
  // $tabbar-bg: $oil;
809
806
  // $tabbar-height: rem-calc(45);
810
807
  // $tabbar-icon-width: $tabbar-height;
@@ -1400,6 +1397,8 @@ $include-html-global-classes: $include-html-classes;
1400
1397
  // $topbar-link-font-family: $body-font-family;
1401
1398
  // $topbar-link-text-transform: none;
1402
1399
  // $topbar-link-padding: $topbar-height / 3;
1400
+ // $topbar-back-link-size: $h5-font-size;
1401
+ // $topbar-link-dropdown-padding: 20px;
1403
1402
 
1404
1403
  // $topbar-button-font-size: 0.75rem;
1405
1404
  // $topbar-button-top: 7px;
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.abide = {
5
5
  name : 'abide',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  live_validate : true,
@@ -180,17 +180,17 @@
180
180
  parent = direct_parent.parent();
181
181
  }
182
182
 
183
+ if (validator) {
184
+ valid = this.settings.validators[validator].apply(this, [el, required, parent]);
185
+ validations.push(valid);
186
+ }
187
+
183
188
  if (is_radio && required) {
184
189
  validations.push(this.valid_radio(el, required));
185
190
  } else if (is_checkbox && required) {
186
191
  validations.push(this.valid_checkbox(el, required));
187
192
  } else {
188
193
 
189
- if (validator) {
190
- valid = this.settings.validators[validator].apply(this, [el, required, parent]);
191
- validations.push(valid);
192
- }
193
-
194
194
  if (el_patterns[i][1].test(value) && valid_length ||
195
195
  !required && el.value.length < 1 || $(el).attr('disabled')) {
196
196
  validations.push(true);
@@ -202,13 +202,27 @@
202
202
 
203
203
  if(validations[0]){
204
204
  this.S(el).removeAttr(this.invalid_attr);
205
+ el.setAttribute('aria-invalid', 'false');
206
+ el.removeAttribute('aria-describedby');
205
207
  parent.removeClass('error');
206
- if (label.length > 0 && this.settings.error_labels) label.removeClass('error');
208
+ if (label.length > 0 && this.settings.error_labels) {
209
+ label.removeClass('error').removeAttr('role');
210
+ }
207
211
  $(el).triggerHandler('valid');
208
212
  } else {
209
- parent.addClass('error');
210
213
  this.S(el).attr(this.invalid_attr, '');
211
- if (label.length > 0 && this.settings.error_labels) label.addClass('error');
214
+ el.setAttribute('aria-invalid', 'true');
215
+
216
+ // Try to find the error associated with the input
217
+ var errorElem = parent.find('small.error, span.error');
218
+ var errorID = errorElem.length > 0 ? errorElem[0].id : "";
219
+ if (errorID.length > 0) el.setAttribute('aria-describedby', errorID);
220
+
221
+ // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
222
+ parent.addClass('error');
223
+ if (label.length > 0 && this.settings.error_labels) {
224
+ label.addClass('error').attr('role', 'alert');
225
+ }
212
226
  $(el).triggerHandler('invalid');
213
227
  }
214
228
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.accordion = {
5
5
  name : 'accordion',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  active_class: 'active',
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.alert = {
5
5
  name : 'alert',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  callback: function (){}
@@ -18,7 +18,7 @@
18
18
  var self = this,
19
19
  S = this.S;
20
20
 
21
- $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] a.close', function (e) {
21
+ $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
22
22
  var alertBox = S(this).closest('[' + self.attr_name() + ']'),
23
23
  settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
24
24
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.clearing = {
5
5
  name : 'clearing',
6
6
 
7
- version: '5.3.3',
7
+ version: '5.4.1',
8
8
 
9
9
  settings : {
10
10
  templates : {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.dropdown = {
5
5
  name : 'dropdown',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  active_class: 'open',
@@ -103,9 +103,12 @@
103
103
  close: function (dropdown) {
104
104
  var self = this;
105
105
  dropdown.each(function () {
106
+ var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id+ ']');
107
+ original_target.attr('aria-expanded', "false");
106
108
  if (self.S(this).hasClass(self.settings.active_class)) {
107
109
  self.S(this)
108
110
  .css(Foundation.rtl ? 'right':'left', '-99999px')
111
+ .attr('aria-hidden', "true")
109
112
  .removeClass(self.settings.active_class)
110
113
  .prev('[' + self.attr_name() + ']')
111
114
  .removeClass(self.settings.active_class)
@@ -129,6 +132,9 @@
129
132
  .addClass(this.settings.active_class), target);
130
133
  dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
131
134
  dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);
135
+ dropdown.attr('aria-hidden', 'false');
136
+ target.attr('aria-expanded', 'true')
137
+ dropdown.focus();
132
138
  },
133
139
 
134
140
  data_attr: function () {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.equalizer = {
5
5
  name : 'equalizer',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  use_tallest: true,
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.interchange = {
5
5
  name : 'interchange',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  cache : {},
10
10
 
@@ -6,7 +6,7 @@
6
6
  Foundation.libs.joyride = {
7
7
  name : 'joyride',
8
8
 
9
- version : '5.3.3',
9
+ version : '5.4.1',
10
10
 
11
11
  defaults : {
12
12
  expose : false, // turn on or off the expose feature
@@ -278,7 +278,7 @@
278
278
  window.Foundation = {
279
279
  name : 'Foundation',
280
280
 
281
- version : '5.3.3',
281
+ version : '5.4.1',
282
282
 
283
283
  media_queries : {
284
284
  small : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
@@ -4,7 +4,7 @@
4
4
  Foundation.libs['magellan-expedition'] = {
5
5
  name : 'magellan-expedition',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  active_class: 'active',
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.offcanvas = {
5
5
  name : 'offcanvas',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  open_method: 'move',
@@ -40,11 +40,12 @@
40
40
  if (self.settings.open_method !== 'overlap'){
41
41
  S(".left-submenu").removeClass(move_class + right_postfix);
42
42
  }
43
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
43
44
  })
44
45
  .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
45
46
  var settings = self.get_settings(e);
46
47
  var parent = S(this).parent();
47
-
48
+
48
49
  if(settings.close_on_click && !parent.hasClass("has-submenu") && !parent.hasClass("back")){
49
50
  self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
50
51
  parent.parent().removeClass(move_class + right_postfix);
@@ -54,18 +55,20 @@
54
55
  }else if(parent.hasClass("back")){
55
56
  e.preventDefault();
56
57
  parent.parent().removeClass(move_class + right_postfix);
57
- }
58
+ }
59
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
58
60
  })
59
61
  .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
60
62
  self.click_toggle_class(e, move_class + left_postfix);
61
63
  if (self.settings.open_method !== 'overlap'){
62
64
  S(".right-submenu").removeClass(move_class + left_postfix);
63
65
  }
66
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
64
67
  })
65
68
  .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
66
69
  var settings = self.get_settings(e);
67
70
  var parent = S(this).parent();
68
-
71
+
69
72
  if(settings.close_on_click && !parent.hasClass("has-submenu") && !parent.hasClass("back")){
70
73
  self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
71
74
  parent.parent().removeClass(move_class + left_postfix);
@@ -75,7 +78,8 @@
75
78
  }else if(parent.hasClass("back")){
76
79
  e.preventDefault();
77
80
  parent.parent().removeClass(move_class + left_postfix);
78
- }
81
+ }
82
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
79
83
  })
80
84
  .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
81
85
  self.click_remove_class(e, move_class + left_postfix);
@@ -84,6 +88,15 @@
84
88
  self.click_remove_class(e, move_class + right_postfix);
85
89
  S(".left-submenu").removeClass(move_class + left_postfix);
86
90
  }
91
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
92
+ })
93
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
94
+ self.click_remove_class(e, move_class + left_postfix);
95
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'false');
96
+ if (right_postfix) {
97
+ self.click_remove_class(e, move_class + right_postfix);
98
+ $('.right-off-canvas-toggle').attr('aria-expanded', "false");
99
+ }
87
100
  });
88
101
  },
89
102
 
@@ -402,7 +402,7 @@
402
402
  Foundation.libs.orbit = {
403
403
  name: 'orbit',
404
404
 
405
- version: '5.3.3',
405
+ version: '5.4.1',
406
406
 
407
407
  settings: {
408
408
  animation: 'slide',
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.reveal = {
5
5
  name : 'reveal',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  locked : false,
10
10
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.slider = {
5
5
  name : 'slider',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings: {
10
10
  start: 0,
@@ -128,6 +128,15 @@
128
128
 
129
129
  $handle.parent().children('input[type=hidden]').val(value);
130
130
 
131
+ if (!$handle[0].hasAttribute('aria-valuemin')) {
132
+ $handle.attr({
133
+ 'aria-valuemin': settings.start,
134
+ 'aria-valuemax': settings.end,
135
+ });
136
+ }
137
+ $handle.attr('aria-valuenow', value);
138
+
139
+
131
140
  if (settings.input_id != '') {
132
141
  $(settings.display_selector).each(function(){
133
142
  if (this.hasOwnProperty('value')) {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.tab = {
5
5
  name : 'tab',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  active_class: 'active',
@@ -35,17 +35,20 @@
35
35
  var self = this,
36
36
  S = this.S;
37
37
 
38
- S(this.scope)
39
- .off('.tab')
40
- // Click event: tab title
41
- .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
38
+ var usual_tab_behavior = function (e) {
42
39
  var settings = S(this).closest('[' + self.attr_name() +']').data(self.attr_name(true) + '-init');
43
40
  if (!settings.is_hover || Modernizr.touch) {
44
41
  e.preventDefault();
45
42
  e.stopPropagation();
46
43
  self.toggle_active_tab(S(this).parent());
47
44
  }
48
- })
45
+ };
46
+
47
+ S(this.scope)
48
+ .off('.tab')
49
+ // Click event: tab title
50
+ .on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
51
+ .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
49
52
  // Hover event: tab title
50
53
  .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
51
54
  var settings = S(this).closest('[' + self.attr_name() +']').data(self.attr_name(true) + '-init');
@@ -56,7 +59,14 @@
56
59
  S(window).on('hashchange.fndtn.tab', function (e) {
57
60
  e.preventDefault();
58
61
  self.handle_location_hash_change();
59
- });
62
+
63
+ }).on('keyup', function (e) {
64
+         if (e.keyword == 9) {
65
+           // active tab
66
+           console.log(document.querySelector('[data-tab] .tab-title :focus'))
67
+         }
68
+       });
69
+ ;
60
70
  },
61
71
 
62
72
  handle_location_hash_change : function () {
@@ -96,11 +106,58 @@
96
106
  toggle_active_tab: function (tab, location_hash) {
97
107
  var S = this.S,
98
108
  tabs = tab.closest('[' + this.attr_name() + ']'),
109
+ tab_link = tab.find('a'),
99
110
  anchor = tab.children('a').first(),
100
111
  target_hash = '#' + anchor.attr('href').split('#')[1],
101
112
  target = S(target_hash),
102
113
  siblings = tab.siblings(),
103
- settings = tabs.data(this.attr_name(true) + '-init');
114
+ settings = tabs.data(this.attr_name(true) + '-init'),
115
+ interpret_keyup_action = function(e) {
116
+ // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
117
+
118
+ // define current, previous and next (possible) tabs
119
+
120
+ var $original = $(this);
121
+ var $prev = $(this).parents('li').prev().children('[role="tab"]');
122
+ var $next = $(this).parents('li').next().children('[role="tab"]');
123
+ var $target;
124
+
125
+ // find the direction (prev or next)
126
+
127
+ switch (e.keyCode) {
128
+ case 37:
129
+ $target = $prev;
130
+ break;
131
+ case 39:
132
+ $target = $next;
133
+ break;
134
+ default:
135
+ $target = false
136
+ break;
137
+ }
138
+
139
+ if ($target.length) {
140
+ $original.attr({
141
+ 'tabindex' : '-1',
142
+ 'aria-selected' : null
143
+ });
144
+ $target.attr({
145
+ 'tabindex' : '0',
146
+ 'aria-selected' : true
147
+ }).focus();
148
+ }
149
+
150
+ // Hide panels
151
+
152
+ $('[role="tabpanel"]')
153
+ .attr('aria-hidden', 'true');
154
+
155
+ // Show panel which corresponds to target
156
+
157
+ $('#' + $(document.activeElement).attr('href').substring(1))
158
+ .attr('aria-hidden', null);
159
+
160
+ };
104
161
 
105
162
  // allow usage of data-tab-content attribute instead of href
106
163
  if (S(this).data(this.data_attr('tab-content'))) {
@@ -144,12 +201,18 @@
144
201
  // WARNING: The activation and deactivation of the tab content must
145
202
  // occur after the deep linking in order to properly refresh the browser
146
203
  // window (notably in Chrome).
204
+ // Clean up multiple attr instances to done once
147
205
  tab.addClass(settings.active_class).triggerHandler('opened');
148
- siblings.removeClass(settings.active_class);
149
- target.siblings().removeClass(settings.active_class).end().addClass(settings.active_class);
206
+ tab_link.attr({"aria-selected": "true", tabindex: 0});
207
+ siblings.removeClass(settings.active_class)
208
+ siblings.find('a').attr({"aria-selected": "false", tabindex: -1});
209
+ target.siblings().removeClass(settings.active_class).attr({"aria-hidden": "true", tabindex: -1}).end().addClass(settings.active_class).attr('aria-hidden', 'false').find(':first-child').attr('tabindex', 0);
150
210
  settings.callback(tab);
211
+ target.children().attr('tab-index', 0);
151
212
  target.triggerHandler('toggled', [tab]);
152
213
  tabs.triggerHandler('toggled', [target]);
214
+
215
+ tab_link.on('keydown', interpret_keyup_action );
153
216
  },
154
217
 
155
218
  data_attr: function (str) {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.tooltip = {
5
5
  name : 'tooltip',
6
6
 
7
- version : '5.3.3',
7
+ version : '5.4.1',
8
8
 
9
9
  settings : {
10
10
  additional_inheritable_classes : [],
@@ -15,9 +15,9 @@
15
15
  hover_delay: 200,
16
16
  show_on : 'all',
17
17
  tip_template : function (selector, content) {
18
- return '<span data-selector="' + selector + '" class="'
18
+ return '<span data-selector="' + selector + '" id="' + selector + '" class="'
19
19
  + Foundation.libs.tooltip.settings.tooltip_class.substring(1)
20
- + '">' + content + '<span class="nub"></span></span>';
20
+ + '" role="tooltip">' + content + '<span class="nub"></span></span>';
21
21
  }
22
22
  },
23
23
 
@@ -143,7 +143,9 @@
143
143
 
144
144
  if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
145
145
  dataSelector = this.random_str(6);
146
- $target.attr('data-selector', dataSelector);
146
+ $target
147
+ .attr('data-selector', dataSelector)
148
+ .attr('aria-describedby', dataSelector);
147
149
  }
148
150
 
149
151
  return (id && id.length > 0) ? id : dataSelector;
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.topbar = {
5
5
  name : 'topbar',
6
6
 
7
- version: '5.3.3',
7
+ version: '5.4.1',
8
8
 
9
9
  settings : {
10
10
  index : 0,
@@ -277,6 +277,15 @@
277
277
  $movedLi.removeClass('moved');
278
278
  }, 300);
279
279
  });
280
+
281
+ // Show dropdown menus when their items are focused
282
+ S(this.scope).find('.dropdown a')
283
+ .focus(function() {
284
+ $(this).parents('.has-dropdown').addClass('hover');
285
+ })
286
+ .blur(function() {
287
+ $(this).parents('.has-dropdown').removeClass('hover');
288
+ });
280
289
  },
281
290
 
282
291
  resize : function () {
@@ -100,7 +100,6 @@ $include-html-global-classes: $include-html-classes;
100
100
  // $body-bg: $white;
101
101
  // $body-font-color: $jet;
102
102
  // $body-font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
103
- // $font-weight-normal:normal;
104
103
  // $body-font-weight: $font-weight-normal;
105
104
  // $body-font-style: normal;
106
105
 
@@ -803,8 +802,6 @@ $include-html-global-classes: $include-html-classes;
803
802
 
804
803
  // $include-html-off-canvas-classes: $include-html-classes;
805
804
 
806
- // $include-html-off-canvas-classes: $include-html-classes;
807
-
808
805
  // $tabbar-bg: $oil;
809
806
  // $tabbar-height: rem-calc(45);
810
807
  // $tabbar-icon-width: $tabbar-height;
@@ -1400,6 +1397,8 @@ $include-html-global-classes: $include-html-classes;
1400
1397
  // $topbar-link-font-family: $body-font-family;
1401
1398
  // $topbar-link-text-transform: none;
1402
1399
  // $topbar-link-padding: $topbar-height / 3;
1400
+ // $topbar-back-link-size: $h5-font-size;
1401
+ // $topbar-link-dropdown-padding: 20px;
1403
1402
 
1404
1403
  // $topbar-button-font-size: 0.75rem;
1405
1404
  // $topbar-button-top: 7px;
@@ -175,7 +175,7 @@ $button-disabled-cursor: $cursor-default-value !default;
175
175
  &:focus { background-color: $bg; }
176
176
  }
177
177
 
178
- // We can control how much button radius us used.
178
+ // We can control how much button radius is used.
179
179
  @if $radius == true { @include radius($button-radius); }
180
180
  @else if $radius { @include radius($radius); }
181
181
 
@@ -321,14 +321,14 @@ $select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%) !default;
321
321
  -webkit-appearance: none !important;
322
322
  -webkit-border-radius: 0px;
323
323
  background-color: $select-bg-color;
324
-
324
+
325
325
  // The custom arrow have some fake horizontal padding so we can align it
326
326
  // from the right side of the element without relying on CSS3
327
327
  background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);
328
-
328
+
329
329
  // We can safely use leftmost and rightmost now
330
330
  background-position: if($text-direction == 'rtl', 0%, 100%) center;
331
-
331
+
332
332
  background-repeat: no-repeat;
333
333
  border: $input-border-width $input-border-style $input-border-color;
334
334
  padding: $form-spacing / 2;
@@ -397,12 +397,8 @@ $select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%) !default;
397
397
  .postfix.button.round { @include radius(0); @include side-radius($opposite-direction, $button-round); }
398
398
 
399
399
  /* Separate prefix and postfix styles when on span or label so buttons keep their own */
400
- span.prefix,label.prefix { @include prefix();
401
- &.radius { @include radius(0); @include side-radius($default-float, $global-radius); }
402
- }
403
- span.postfix,label.postfix { @include postfix();
404
- &.radius { @include radius(0); @include side-radius($opposite-direction, $global-radius); }
405
- }
400
+ span.prefix,label.prefix { @include prefix(); }
401
+ span.postfix,label.postfix { @include postfix(); }
406
402
 
407
403
  /* We use this to get basic styling on all basic form elements */
408
404
  input[type="text"],
@@ -431,6 +427,35 @@ $select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%) !default;
431
427
  }
432
428
  }
433
429
 
430
+ form {
431
+ .row {
432
+ .prefix-radius.row.collapse {
433
+ input,
434
+ textarea,
435
+ select { @include radius(0); @include side-radius($opposite-direction, $button-radius); }
436
+ .prefix { @include radius(0); @include side-radius($default-float, $button-radius); }
437
+ }
438
+ .postfix-radius.row.collapse {
439
+ input,
440
+ textarea,
441
+ select { @include radius(0); @include side-radius($default-float, $button-radius); }
442
+ .postfix { @include radius(0); @include side-radius($opposite-direction, $button-radius); }
443
+ }
444
+ .prefix-round.row.collapse {
445
+ input,
446
+ textarea,
447
+ select { @include radius(0); @include side-radius($opposite-direction, $button-round); }
448
+ .prefix { @include radius(0); @include side-radius($default-float, $button-round); }
449
+ }
450
+ .postfix-round.row.collapse {
451
+ input,
452
+ textarea,
453
+ select { @include radius(0); @include side-radius($default-float, $button-round); }
454
+ .postfix { @include radius(0); @include side-radius($opposite-direction, $button-round); }
455
+ }
456
+ }
457
+ }
458
+
434
459
  input[type="submit"] {
435
460
  -webkit-appearance: none;
436
461
  -webkit-border-radius: 0px;
@@ -228,7 +228,6 @@ $success-color: #43AC6A !default; // sea-green
228
228
  $warning-color: #f08a24 !default; // carrot
229
229
  $info-color: #a0d3e8 !default; // cornflower
230
230
 
231
-
232
231
  $white : #FFFFFF !default;
233
232
  $ghost : #FAFAFA !default;
234
233
  $snow : #F9F9F9 !default;
@@ -249,7 +248,6 @@ $oil : #333333 !default;
249
248
  $jet : #222222 !default;
250
249
  $black : #000000 !default;
251
250
 
252
-
253
251
  // We use these to define default font weights
254
252
  $font-weight-normal: normal !default;
255
253
  $font-weight-bold: bold !default;
@@ -327,6 +325,7 @@ $large: $large-up;
327
325
 
328
326
 
329
327
  //We use this as cursors values for enabling the option of having custom cursors in the whole site's stylesheet
328
+ $cursor-auto-value: auto !default;
330
329
  $cursor-crosshair-value: crosshair !default;
331
330
  $cursor-default-value: default !default;
332
331
  $cursor-pointer-value: pointer !default;
@@ -341,7 +340,7 @@ $cursor-text-value: text !default;
341
340
  // Forward slash placed around everything to convince PhantomJS to read the value.
342
341
 
343
342
  meta.foundation-version {
344
- font-family: "/{{ VERSION }}/";
343
+ font-family: "/5.4.1/";
345
344
  }
346
345
 
347
346
  meta.foundation-mq-small {
@@ -399,7 +398,7 @@ $cursor-text-value: text !default;
399
398
  font-style: $body-font-style;
400
399
  line-height: $base-line-height; // Set to $base-line-height to take on browser default of 150%
401
400
  position: relative;
402
- cursor: $cursor-default-value;
401
+ cursor: $cursor-auto-value;
403
402
  }
404
403
 
405
404
  a:hover { cursor: $cursor-pointer-value; }
@@ -106,12 +106,15 @@ $menu-slide: "transform 500ms ease" !default;
106
106
  top: 0;
107
107
  bottom: 0;
108
108
  position: absolute;
109
- overflow-y: auto;
109
+ overflow-x: hidden;
110
+ overflow-y: auto;
110
111
  background: $off-canvas-bg;
111
112
  z-index: 1001;
112
113
  box-sizing: content-box;
113
114
  transition: transform 500ms ease 0s;
114
115
  -webkit-overflow-scrolling: touch;
116
+ -ms-overflow-style: -ms-autohiding-scrollbar;
117
+
115
118
  @if $position == left {
116
119
  @include translate3d(-100.5%,0,0);
117
120
  left: 0;
@@ -394,7 +397,8 @@ $menu-slide: "transform 500ms ease" !default;
394
397
  bottom: 0;
395
398
  position: absolute;
396
399
  margin: 0;
397
- overflow-y: auto;
400
+ overflow-x: hidden;
401
+ overflow-y: auto;
398
402
  background: $off-canvas-bg;
399
403
  z-index: 1002;
400
404
  box-sizing: content-box;
@@ -21,10 +21,11 @@ $range-slider-bar-height: rem-calc(16) !default;
21
21
 
22
22
  $range-slider-bar-border-width: 1px !default;
23
23
  $range-slider-bar-border-style: solid !default;
24
- $range-slider-bar-border-color: $gainsboro !default;
24
+ $range-slider-bar-border-color: $gainsboro !default;
25
25
  $range-slider-radius: $global-radius !default;
26
26
  $range-slider-round: $global-rounded !default;
27
27
  $range-slider-bar-bg-color: $ghost !default;
28
+ $range-slider-active-segment-bg-color: scale-color($secondary-color, $lightness: -1%) !default;
28
29
 
29
30
  // Vertical bar styles
30
31
  $range-slider-vertical-bar-width: rem-calc(16) !default;
@@ -79,7 +80,7 @@ $range-slider-disabled-opacity: 0.7 !default;
79
80
  }
80
81
 
81
82
  @mixin range-slider-bar(
82
- $bg: $range-slider-bar-bg-color,
83
+ $bg: $range-slider-bar-bg-color,
83
84
  $radius:false) {
84
85
  @include range-slider-bar-base;
85
86
  @include range-slider-bar-style;
@@ -94,6 +95,10 @@ $range-slider-disabled-opacity: 0.7 !default;
94
95
  height: $range-slider-handle-height;
95
96
  border: $range-slider-handle-border-width $range-slider-handle-border-style $range-slider-handle-border-color;
96
97
  cursor: $range-slider-handle-cursor;
98
+
99
+ // This removes the 300ms touch delay on Windows 8
100
+ -ms-touch-action: manipulation;
101
+ touch-action: manipulation;
97
102
  }
98
103
  @mixin range-slider-handle-style(
99
104
  $bg: true,
@@ -153,7 +158,7 @@ $range-slider-disabled-opacity: 0.7 !default;
153
158
  display: inline-block;
154
159
  position: absolute;
155
160
  height: $range-slider-bar-height - rem-calc((strip-unit($range-slider-bar-border-width) * 2));
156
- background: scale-color($secondary-color, $lightness: -1%);
161
+ background: $range-slider-active-segment-bg-color;
157
162
  }
158
163
  .range-slider-handle {
159
164
  @include range-slider-handle-base;
@@ -65,11 +65,7 @@ $close-reveal-modal-class: "close-reveal-modal" !default;
65
65
  // $base-style - Provides reveal base styles, can be set to false to override. Default: true, Options: false
66
66
  // $width - Sets reveal width Default: $reveal-default-width || 80%
67
67
  //
68
- @mixin reveal-modal-base(
69
- $base-style:true,
70
- $width:$reveal-default-width,
71
- $max-width:$reveal-max-width,
72
- $border-radius: $reveal-radius) {
68
+ @mixin reveal-modal-base( $base-style: true, $width:$reveal-default-width, $max-width:$reveal-max-width, $border-radius: $reveal-radius) {
73
69
  @if $base-style {
74
70
  visibility: hidden;
75
71
  display: none;
@@ -77,18 +73,19 @@ $close-reveal-modal-class: "close-reveal-modal" !default;
77
73
  z-index: 1005;
78
74
  width: 100vw;
79
75
  top:0;
80
- border-radius: $border-radius;
76
+ border-radius: $border-radius;
81
77
  #{$default-float}: 0;
78
+
82
79
  @media #{$small-only} {
83
80
  min-height:100vh;
84
81
  }
85
82
 
86
83
  // Make sure rows don't have a min-width on them
87
- .column,
88
- .columns { min-width: 0; }
84
+ .column, .columns { min-width: 0; }
89
85
 
90
86
  // Get rid of margin from first and last element inside modal
91
87
  & > :first-child { margin-top: 0; }
88
+
92
89
  & > :last-child { margin-bottom: 0; }
93
90
  }
94
91
 
@@ -201,12 +198,15 @@ $close-reveal-modal-class: "close-reveal-modal" !default;
201
198
 
202
199
  dialog {
203
200
  @extend .#{$reveal-modal-class};
201
+ display: none;
204
202
 
205
- &::backdrop {
203
+ &::backdrop, & + .backdrop {
206
204
  @include reveal-bg(false);
207
205
  }
208
206
 
209
- //&[open]{ display: block; } As far as I know, this is no longer needed; this is the expected behavior in all browsers that currently support dialog or plan to with their nightly builds.
207
+ &[open]{
208
+ display: block;
209
+ }
210
210
  }
211
211
 
212
212
  // Reveal Print Styles: It should be invislbe, adds no value being printed.
@@ -70,6 +70,7 @@ $side-nav-divider-color: scale-color($white, $lightness: 10%) !default;
70
70
  li {
71
71
  margin: $side-nav-list-margin;
72
72
  font-size: $font-size;
73
+ font-weight: $side-nav-font-weight;
73
74
 
74
75
  a:not(.button) {
75
76
  display: block;
@@ -63,7 +63,11 @@ $switch-active-color: $primary-color;
63
63
  // So that we don't need to recreate the form with any JS, we use the
64
64
  // existing checkbox or radio button, but we cleverly position and hide it.
65
65
  input {
66
- display: none;
66
+ opacity: 0;
67
+ position: absolute;
68
+ top: 9px;
69
+ left: 10px;
70
+ padding:0;
67
71
 
68
72
  & + label { margin-left: 0; margin-right: 0; }
69
73
  }
@@ -182,7 +186,10 @@ $switch-active-color: $primary-color;
182
186
  $paddle-bg: $switch-paddle-bg,
183
187
  $active-color: $switch-active-color,
184
188
  $radius:false,
185
- $base-style:true) {
189
+ $base-style:true) {
190
+ padding: 0;
191
+ border: none;
192
+ position: relative;
186
193
  @include switch-base($transition-speed, $transition-ease);
187
194
  @include switch-size($height);
188
195
  @include switch-style($paddle-bg, $radius, $base-style);
@@ -190,7 +197,7 @@ $switch-active-color: $primary-color;
190
197
 
191
198
  @include exports("switch") {
192
199
  @if $include-html-form-classes {
193
- div.switch {
200
+ .switch {
194
201
  @include switch;
195
202
 
196
203
  // Large radio switches
@@ -63,8 +63,8 @@ $table-margin-bottom: rem-calc(20) !default;
63
63
  background: $table-bg;
64
64
  margin-bottom: $table-margin-bottom;
65
65
  border: $table-border-style $table-border-size $table-border-color;
66
- table-layout:fixed;
67
- width:100%;
66
+ table-layout: fixed;
67
+ width: 100%;
68
68
 
69
69
  caption {
70
70
  background: $table-caption-bg;
@@ -48,7 +48,8 @@ $topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%) !def
48
48
  $topbar-link-font-family: $body-font-family !default;
49
49
  $topbar-link-text-transform: none !default;
50
50
  $topbar-link-padding: $topbar-height / 3 !default;
51
-
51
+ $topbar-back-link-size: $h5-font-size !default;
52
+ $topbar-link-dropdown-padding: 20px;
52
53
  $topbar-button-font-size: 0.75rem !default;
53
54
  $topbar-button-top: 7px !default;
54
55
 
@@ -163,13 +164,18 @@ $topbar-arrows: true !default; //Set false to remove the triangle icon from the
163
164
  input { height: 1.8rem; padding-top: .35rem; padding-bottom: .35rem; font-size: $topbar-button-font-size; }
164
165
 
165
166
  .button, button {
166
- padding-top: .45rem;
167
- padding-bottom: .35rem;
167
+ padding-top: .35rem + rem-calc(1);
168
+ padding-bottom: .35rem + rem-calc(1);
168
169
  margin-bottom: 0;
169
170
  font-size: $topbar-button-font-size;
170
171
  // position: relative;
171
172
  // top: -1px;
172
-
173
+
174
+ // Corrects a slight misalignment when put next to an input field
175
+ @media #{$small-only} {
176
+ position: relative;
177
+ top: -1px;
178
+ }
173
179
  }
174
180
 
175
181
  // Title Area
@@ -402,11 +408,12 @@ $topbar-arrows: true !default; //Set false to remove the triangle icon from the
402
408
  }
403
409
 
404
410
  &.title h5, &.parent-link {
411
+ // Back Button
405
412
  margin-bottom: 0;
406
413
  margin-top: 0;
407
414
  a {
408
415
  color: $topbar-link-color;
409
- line-height: $topbar-height / 2;
416
+ // line-height: $topbar-height / 2;
410
417
  display: block;
411
418
  &:hover { background:none; }
412
419
  }
@@ -515,7 +522,7 @@ $topbar-arrows: true !default; //Set false to remove the triangle icon from the
515
522
  @if($topbar-arrows){
516
523
 
517
524
  & > a {
518
- padding-#{$opposite-direction}: $topbar-link-padding + 20 !important;
525
+ padding-#{$opposite-direction}: $topbar-link-padding + $topbar-link-dropdown-padding !important;
519
526
  &:after {
520
527
  @include css-triangle($topbar-dropdown-toggle-size, rgba($topbar-dropdown-toggle-color, $topbar-dropdown-toggle-alpha), top);
521
528
  margin-top: -($topbar-dropdown-toggle-size / 2);
@@ -536,6 +543,9 @@ $topbar-arrows: true !default; //Set false to remove the triangle icon from the
536
543
  @include topbar-show-dropdown();
537
544
  }
538
545
  }
546
+ > a:focus + .dropdown {
547
+ @include topbar-show-dropdown();
548
+ }
539
549
 
540
550
  .dropdown li.has-dropdown {
541
551
  & > a {
@@ -656,6 +666,9 @@ $topbar-arrows: true !default; //Set false to remove the triangle icon from the
656
666
  @include topbar-show-dropdown();
657
667
  }
658
668
  }
669
+ > a:focus + .dropdown {
670
+ @include topbar-show-dropdown();
671
+ }
659
672
  }
660
673
  }
661
674
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foundation-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.1.0
4
+ version: 5.4.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-26 00:00:00.000000000 Z
12
+ date: 2014-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -238,7 +238,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
238
  version: '0'
239
239
  segments:
240
240
  - 0
241
- hash: 2024180273130116904
241
+ hash: 912037354965873330
242
242
  required_rubygems_version: !ruby/object:Gem::Requirement
243
243
  none: false
244
244
  requirements:
@@ -247,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
247
  version: '0'
248
248
  segments:
249
249
  - 0
250
- hash: 2024180273130116904
250
+ hash: 912037354965873330
251
251
  requirements: []
252
252
  rubyforge_project:
253
253
  rubygems_version: 1.8.23