foundation-rails 6.2.1.0 → 6.2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bower.json +1 -1
- data/lib/foundation/rails/version.rb +1 -1
- data/lib/generators/foundation/templates/_settings.scss +1 -1
- data/vendor/assets/js/foundation.abide.js.es6 +27 -11
- data/vendor/assets/js/foundation.accordion.js.es6 +1 -1
- data/vendor/assets/js/foundation.accordionMenu.js.es6 +10 -7
- data/vendor/assets/js/foundation.core.js.es6 +3 -3
- data/vendor/assets/js/foundation.drilldown.js.es6 +31 -23
- data/vendor/assets/js/foundation.dropdown.js.es6 +1 -1
- data/vendor/assets/js/foundation.dropdownMenu.js.es6 +34 -26
- data/vendor/assets/js/foundation.equalizer.js.es6 +27 -6
- data/vendor/assets/js/foundation.interchange.js.es6 +22 -16
- data/vendor/assets/js/foundation.magellan.js.es6 +1 -1
- data/vendor/assets/js/foundation.offcanvas.js.es6 +6 -3
- data/vendor/assets/js/foundation.responsiveToggle.js.es6 +10 -3
- data/vendor/assets/js/foundation.reveal.js.es6 +53 -35
- data/vendor/assets/js/foundation.slider.js.es6 +31 -11
- data/vendor/assets/js/foundation.sticky.js.es6 +30 -27
- data/vendor/assets/js/foundation.tabs.js.es6 +13 -5
- data/vendor/assets/js/foundation.tooltip.js.es6 +12 -6
- data/vendor/assets/js/foundation.util.box.js.es6 +1 -1
- data/vendor/assets/js/foundation.util.keyboard.js.es6 +3 -3
- data/vendor/assets/js/foundation.util.mediaQuery.js.es6 +15 -11
- data/vendor/assets/js/foundation.util.touch.js.es6 +1 -1
- data/vendor/assets/scss/components/_accordion.scss +27 -7
- data/vendor/assets/scss/components/_button-group.scss +15 -23
- data/vendor/assets/scss/components/_button.scss +5 -0
- data/vendor/assets/scss/components/_dropdown-menu.scss +16 -5
- data/vendor/assets/scss/components/_media-object.scss +8 -2
- data/vendor/assets/scss/components/_menu.scss +9 -7
- data/vendor/assets/scss/components/_reveal.scss +7 -0
- data/vendor/assets/scss/components/_title-bar.scss +1 -1
- data/vendor/assets/scss/forms/_input-group.scss +1 -0
- data/vendor/assets/scss/forms/_select.scss +2 -1
- data/vendor/assets/scss/foundation.scss +1 -1
- data/vendor/assets/scss/grid/_classes.scss +2 -1
- data/vendor/assets/scss/grid/_flex-grid.scss +1 -1
- data/vendor/assets/scss/grid/_position.scss +1 -1
- data/vendor/assets/scss/grid/_row.scss +1 -1
- data/vendor/assets/scss/settings/_settings.scss +1 -1
- data/vendor/assets/scss/util/_breakpoint.scss +4 -3
- data/vendor/assets/scss/util/_mixins.scss +1 -1
- metadata +2 -2
@@ -66,31 +66,27 @@ class Sticky {
|
|
66
66
|
* @private
|
67
67
|
*/
|
68
68
|
_parsePoints() {
|
69
|
-
var top = this.options.topAnchor,
|
70
|
-
btm = this.options.btmAnchor,
|
69
|
+
var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor,
|
70
|
+
btm = this.options.btmAnchor== "" ? document.documentElement.scrollHeight : this.options.btmAnchor,
|
71
71
|
pts = [top, btm],
|
72
72
|
breaks = {};
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
pt
|
84
|
-
if (place[1] && place[1].toLowerCase() === 'bottom') {
|
85
|
-
pt += anchor[0].getBoundingClientRect().height;
|
86
|
-
}
|
73
|
+
for (var i = 0, len = pts.length; i < len && pts[i]; i++) {
|
74
|
+
var pt;
|
75
|
+
if (typeof pts[i] === 'number') {
|
76
|
+
pt = pts[i];
|
77
|
+
} else {
|
78
|
+
var place = pts[i].split(':'),
|
79
|
+
anchor = $(`#${place[0]}`);
|
80
|
+
|
81
|
+
pt = anchor.offset().top;
|
82
|
+
if (place[1] && place[1].toLowerCase() === 'bottom') {
|
83
|
+
pt += anchor[0].getBoundingClientRect().height;
|
87
84
|
}
|
88
|
-
breaks[i] = pt;
|
89
85
|
}
|
90
|
-
|
91
|
-
breaks = {0: 1, 1: document.documentElement.scrollHeight};
|
86
|
+
breaks[i] = pt;
|
92
87
|
}
|
93
88
|
|
89
|
+
|
94
90
|
this.points = breaks;
|
95
91
|
return;
|
96
92
|
}
|
@@ -195,7 +191,8 @@ class Sticky {
|
|
195
191
|
* @private
|
196
192
|
*/
|
197
193
|
_setSticky() {
|
198
|
-
var
|
194
|
+
var _this = this,
|
195
|
+
stickTo = this.options.stickTo,
|
199
196
|
mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',
|
200
197
|
notStuckTo = stickTo === 'top' ? 'bottom' : 'top',
|
201
198
|
css = {};
|
@@ -214,6 +211,9 @@ class Sticky {
|
|
214
211
|
* @event Sticky#stuckto
|
215
212
|
*/
|
216
213
|
.trigger(`sticky.zf.stuckto:${stickTo}`);
|
214
|
+
this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function() {
|
215
|
+
_this._setSizes();
|
216
|
+
});
|
217
217
|
}
|
218
218
|
|
219
219
|
/**
|
@@ -235,12 +235,11 @@ class Sticky {
|
|
235
235
|
|
236
236
|
css[mrgn] = 0;
|
237
237
|
|
238
|
-
|
239
|
-
|
240
|
-
css[
|
238
|
+
css['bottom'] = 'auto';
|
239
|
+
if(isTop) {
|
240
|
+
css['top'] = 0;
|
241
241
|
} else {
|
242
|
-
css[
|
243
|
-
css[notStuckTo] = anchorPt;
|
242
|
+
css['top'] = anchorPt;
|
244
243
|
}
|
245
244
|
|
246
245
|
css['left'] = '';
|
@@ -281,6 +280,9 @@ class Sticky {
|
|
281
280
|
});
|
282
281
|
|
283
282
|
var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;
|
283
|
+
if (this.$element.css("display") == "none") {
|
284
|
+
newContainerHeight = 0;
|
285
|
+
}
|
284
286
|
this.containerHeight = newContainerHeight;
|
285
287
|
this.$container.css({
|
286
288
|
height: newContainerHeight
|
@@ -348,8 +350,9 @@ class Sticky {
|
|
348
350
|
'max-width': ''
|
349
351
|
})
|
350
352
|
.off('resizeme.zf.trigger');
|
351
|
-
|
352
|
-
|
353
|
+
if (this.$anchor && this.$anchor.length) {
|
354
|
+
this.$anchor.off('change.zf.sticky');
|
355
|
+
}
|
353
356
|
$(window).off(this.scrollListener);
|
354
357
|
|
355
358
|
if (this.wasWrapped) {
|
@@ -93,9 +93,12 @@ class Tabs {
|
|
93
93
|
_events() {
|
94
94
|
this._addKeyHandler();
|
95
95
|
this._addClickHandler();
|
96
|
-
|
96
|
+
this._setHeightMqHandler = null;
|
97
|
+
|
97
98
|
if (this.options.matchHeight) {
|
98
|
-
|
99
|
+
this._setHeightMqHandler = this._setHeight.bind(this);
|
100
|
+
|
101
|
+
$(window).on('changed.zf.mediaquery', this._setHeightMqHandler);
|
99
102
|
}
|
100
103
|
}
|
101
104
|
|
@@ -129,8 +132,7 @@ class Tabs {
|
|
129
132
|
|
130
133
|
this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){
|
131
134
|
if (e.which === 9) return;
|
132
|
-
|
133
|
-
e.preventDefault();
|
135
|
+
|
134
136
|
|
135
137
|
var $element = $(this),
|
136
138
|
$elements = $element.parent('ul').children('li'),
|
@@ -163,6 +165,10 @@ class Tabs {
|
|
163
165
|
next: function() {
|
164
166
|
$nextElement.find('[role="tab"]').focus();
|
165
167
|
_this._handleTabChange($nextElement);
|
168
|
+
},
|
169
|
+
handled: function() {
|
170
|
+
e.stopPropagation();
|
171
|
+
e.preventDefault();
|
166
172
|
}
|
167
173
|
});
|
168
174
|
});
|
@@ -271,7 +277,9 @@ class Tabs {
|
|
271
277
|
.hide();
|
272
278
|
|
273
279
|
if (this.options.matchHeight) {
|
274
|
-
|
280
|
+
if (this._setHeightMqHandler != null) {
|
281
|
+
$(window).off('changed.zf.mediaquery', this._setHeightMqHandler);
|
282
|
+
}
|
275
283
|
}
|
276
284
|
|
277
285
|
Foundation.unregisterPlugin(this);
|
@@ -35,7 +35,7 @@ class Tooltip {
|
|
35
35
|
_init() {
|
36
36
|
var elemId = this.$element.attr('aria-describedby') || Foundation.GetYoDigits(6, 'tooltip');
|
37
37
|
|
38
|
-
this.options.positionClass = this._getPositionClass(this.$element);
|
38
|
+
this.options.positionClass = this.options.positionClass || this._getPositionClass(this.$element);
|
39
39
|
this.options.tipText = this.options.tipText || this.$element.attr('title');
|
40
40
|
this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);
|
41
41
|
|
@@ -249,7 +249,7 @@ class Tooltip {
|
|
249
249
|
})
|
250
250
|
.on('mouseleave.zf.tooltip', function(e) {
|
251
251
|
clearTimeout(_this.timeout);
|
252
|
-
if (!isFocus || (
|
252
|
+
if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {
|
253
253
|
_this.hide();
|
254
254
|
}
|
255
255
|
});
|
@@ -259,7 +259,7 @@ class Tooltip {
|
|
259
259
|
this.$element.on('mousedown.zf.tooltip', function(e) {
|
260
260
|
e.stopImmediatePropagation();
|
261
261
|
if (_this.isClick) {
|
262
|
-
_this.hide();
|
262
|
+
//_this.hide();
|
263
263
|
// _this.isClick = false;
|
264
264
|
} else {
|
265
265
|
_this.isClick = true;
|
@@ -268,6 +268,11 @@ class Tooltip {
|
|
268
268
|
}
|
269
269
|
}
|
270
270
|
});
|
271
|
+
} else {
|
272
|
+
this.$element.on('mousedown.zf.tooltip', function(e) {
|
273
|
+
e.stopImmediatePropagation();
|
274
|
+
_this.isClick = true;
|
275
|
+
});
|
271
276
|
}
|
272
277
|
|
273
278
|
if (!this.options.disableForTouch) {
|
@@ -286,11 +291,12 @@ class Tooltip {
|
|
286
291
|
this.$element
|
287
292
|
.on('focus.zf.tooltip', function(e) {
|
288
293
|
isFocus = true;
|
289
|
-
// console.log(_this.isClick);
|
290
294
|
if (_this.isClick) {
|
295
|
+
// If we're not showing open on clicks, we need to pretend a click-launched focus isn't
|
296
|
+
// a real focus, otherwise on hover and come back we get bad behavior
|
297
|
+
if(!_this.options.clickOpen) { isFocus = false; }
|
291
298
|
return false;
|
292
299
|
} else {
|
293
|
-
// $(window)
|
294
300
|
_this.show();
|
295
301
|
}
|
296
302
|
})
|
@@ -435,4 +441,4 @@ Tooltip.defaults = {
|
|
435
441
|
// Window exports
|
436
442
|
Foundation.plugin(Tooltip, 'Tooltip');
|
437
443
|
|
438
|
-
}(jQuery);
|
444
|
+
}(jQuery);
|
@@ -28,7 +28,7 @@ function ImNotTouchingYou(element, parent, lrOnly, tbOnly) {
|
|
28
28
|
bottom = (eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top);
|
29
29
|
top = (eleDims.offset.top >= parDims.offset.top);
|
30
30
|
left = (eleDims.offset.left >= parDims.offset.left);
|
31
|
-
right = (eleDims.offset.left + eleDims.width <= parDims.width);
|
31
|
+
right = (eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left);
|
32
32
|
}
|
33
33
|
else {
|
34
34
|
bottom = (eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top);
|
@@ -66,13 +66,13 @@ var Keyboard = {
|
|
66
66
|
|
67
67
|
fn = functions[command];
|
68
68
|
if (fn && typeof fn === 'function') { // execute function if exists
|
69
|
-
fn.apply();
|
69
|
+
var returnValue = fn.apply();
|
70
70
|
if (functions.handled || typeof functions.handled === 'function') { // execute function when event was handled
|
71
|
-
functions.handled
|
71
|
+
functions.handled(returnValue);
|
72
72
|
}
|
73
73
|
} else {
|
74
74
|
if (functions.unhandled || typeof functions.unhandled === 'function') { // execute function when event was not handled
|
75
|
-
functions.unhandled
|
75
|
+
functions.unhandled();
|
76
76
|
}
|
77
77
|
}
|
78
78
|
},
|
@@ -33,10 +33,12 @@ var MediaQuery = {
|
|
33
33
|
namedQueries = parseStyleToObject(extractedStyles);
|
34
34
|
|
35
35
|
for (var key in namedQueries) {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
if(namedQueries.hasOwnProperty(key)) {
|
37
|
+
self.queries.push({
|
38
|
+
name: key,
|
39
|
+
value: `only screen and (min-width: ${namedQueries[key]})`
|
40
|
+
});
|
41
|
+
}
|
40
42
|
}
|
41
43
|
|
42
44
|
this.current = this._getCurrentSize();
|
@@ -68,8 +70,10 @@ var MediaQuery = {
|
|
68
70
|
*/
|
69
71
|
get(size) {
|
70
72
|
for (var i in this.queries) {
|
71
|
-
|
72
|
-
|
73
|
+
if(this.queries.hasOwnProperty(i)) {
|
74
|
+
var query = this.queries[i];
|
75
|
+
if (size === query.name) return query.value;
|
76
|
+
}
|
73
77
|
}
|
74
78
|
|
75
79
|
return null;
|
@@ -106,14 +110,14 @@ var MediaQuery = {
|
|
106
110
|
*/
|
107
111
|
_watcher() {
|
108
112
|
$(window).on('resize.zf.mediaquery', () => {
|
109
|
-
var newSize = this._getCurrentSize();
|
110
|
-
|
111
|
-
if (newSize !== this.current) {
|
112
|
-
// Broadcast the media query change on the window
|
113
|
-
$(window).trigger('changed.zf.mediaquery', [newSize, this.current]);
|
113
|
+
var newSize = this._getCurrentSize(), currentSize = this.current;
|
114
114
|
|
115
|
+
if (newSize !== currentSize) {
|
115
116
|
// Change the current media query
|
116
117
|
this.current = newSize;
|
118
|
+
|
119
|
+
// Broadcast the media query change on the window
|
120
|
+
$(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
|
117
121
|
}
|
118
122
|
});
|
119
123
|
}
|
@@ -101,7 +101,7 @@
|
|
101
101
|
;
|
102
102
|
|
103
103
|
if('MouseEvent' in window && typeof window.MouseEvent === 'function') {
|
104
|
-
simulatedEvent = window.MouseEvent(type, {
|
104
|
+
simulatedEvent = new window.MouseEvent(type, {
|
105
105
|
'bubbles': true,
|
106
106
|
'cancelable': true,
|
107
107
|
'screenX': first.screenX,
|
@@ -36,7 +36,7 @@ $accordion-content-border: 1px solid $light-gray !default;
|
|
36
36
|
|
37
37
|
/// Default text color of tab content.
|
38
38
|
/// @type Color
|
39
|
-
$accordion-content-color: foreground($accordion-background, $
|
39
|
+
$accordion-content-color: foreground($accordion-content-background, $body-font-color) !default;
|
40
40
|
|
41
41
|
/// Default padding for tab content.
|
42
42
|
/// @type Number | List
|
@@ -46,12 +46,20 @@ $accordion-content-padding: 1rem !default;
|
|
46
46
|
@mixin accordion-container {
|
47
47
|
list-style-type: none;
|
48
48
|
background: $accordion-background;
|
49
|
-
border: $accordion-content-border;
|
50
|
-
border-bottom: 0;
|
51
|
-
border-radius: $global-radius;
|
52
49
|
margin-#{$global-left}: 0;
|
53
50
|
}
|
54
51
|
|
52
|
+
/// Adds styles for the accordion item. Apply this to the list item within an accordion ul.
|
53
|
+
@mixin accordion-item {
|
54
|
+
&:first-child > :first-child {
|
55
|
+
border-radius: $global-radius $global-radius 0 0;
|
56
|
+
}
|
57
|
+
|
58
|
+
&:last-child > :last-child {
|
59
|
+
border-radius: 0 0 $global-radius $global-radius;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
55
63
|
/// Adds styles for the title of an accordion item. Apply this to the link within an accordion item.
|
56
64
|
@mixin accordion-title {
|
57
65
|
display: block;
|
@@ -60,7 +68,13 @@ $accordion-content-padding: 1rem !default;
|
|
60
68
|
font-size: rem-calc(12);
|
61
69
|
color: $accordion-item-color;
|
62
70
|
position: relative;
|
63
|
-
border
|
71
|
+
border: $accordion-content-border;
|
72
|
+
border-bottom: 0;
|
73
|
+
|
74
|
+
:last-child:not(.is-active) > & {
|
75
|
+
border-radius: 0 0 $global-radius $global-radius;
|
76
|
+
border-bottom: $accordion-content-border;
|
77
|
+
}
|
64
78
|
|
65
79
|
&:hover,
|
66
80
|
&:focus {
|
@@ -86,8 +100,14 @@ $accordion-content-padding: 1rem !default;
|
|
86
100
|
@mixin accordion-content {
|
87
101
|
padding: $accordion-content-padding;
|
88
102
|
display: none;
|
89
|
-
border
|
103
|
+
border: $accordion-content-border;
|
104
|
+
border-bottom: 0;
|
90
105
|
background-color: $accordion-content-background;
|
106
|
+
color: $accordion-content-color;
|
107
|
+
|
108
|
+
:last-child > &:last-child {
|
109
|
+
border-bottom: $accordion-content-border;
|
110
|
+
}
|
91
111
|
}
|
92
112
|
|
93
113
|
@mixin foundation-accordion {
|
@@ -96,7 +116,7 @@ $accordion-content-padding: 1rem !default;
|
|
96
116
|
}
|
97
117
|
|
98
118
|
.accordion-item {
|
99
|
-
|
119
|
+
@include accordion-item;
|
100
120
|
}
|
101
121
|
|
102
122
|
.accordion-title {
|
@@ -41,14 +41,16 @@ $buttongroup-expand-max: 6 !default;
|
|
41
41
|
|
42
42
|
#{$child-selector} {
|
43
43
|
margin: 0;
|
44
|
+
margin-#{$global-right}: $buttongroup-spacing;
|
45
|
+
margin-bottom: $buttongroup-spacing;
|
44
46
|
font-size: map-get($button-sizes, default);
|
45
47
|
|
46
48
|
@if $global-flexbox {
|
47
49
|
flex: 0 0 auto;
|
48
50
|
}
|
49
51
|
|
50
|
-
&:
|
51
|
-
margin-right:
|
52
|
+
&:last-child {
|
53
|
+
margin-#{$global-right}: 0;
|
52
54
|
}
|
53
55
|
}
|
54
56
|
}
|
@@ -60,7 +62,7 @@ $buttongroup-expand-max: 6 !default;
|
|
60
62
|
$count: null
|
61
63
|
) {
|
62
64
|
@if not $global-flexbox {
|
63
|
-
margin-right: -$buttongroup-spacing;
|
65
|
+
margin-#{$global-right}: -$buttongroup-spacing;
|
64
66
|
|
65
67
|
&::before,
|
66
68
|
&::after {
|
@@ -78,12 +80,12 @@ $buttongroup-expand-max: 6 !default;
|
|
78
80
|
&:first-child:nth-last-child(#{$i}) {
|
79
81
|
&, &:first-child:nth-last-child(#{$i}) ~ #{$selector} {
|
80
82
|
display: inline-block;
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
width: calc(#{percentage(1 / $i)} - #{$buttongroup-spacing});
|
84
|
+
margin-#{$global-right}: $buttongroup-spacing;
|
85
|
+
|
86
|
+
&:last-child {
|
87
|
+
margin-#{$global-right}: $buttongroup-spacing * -$buttongroup-expand-max;
|
85
88
|
}
|
86
|
-
margin-right: $buttongroup-spacing;
|
87
89
|
}
|
88
90
|
}
|
89
91
|
}
|
@@ -103,20 +105,13 @@ $buttongroup-expand-max: 6 !default;
|
|
103
105
|
#{$selector} {
|
104
106
|
@if $global-flexbox {
|
105
107
|
flex: 0 0 100%;
|
106
|
-
margin-#{$global-right}: 0;
|
107
108
|
}
|
108
109
|
@else {
|
109
110
|
width: 100%;
|
110
|
-
border-#{$global-right}: $buttongroup-spacing solid transparent;
|
111
111
|
}
|
112
|
-
|
113
|
-
&:
|
114
|
-
|
115
|
-
margin-bottom: $buttongroup-spacing;
|
116
|
-
}
|
117
|
-
@else {
|
118
|
-
border-bottom: $buttongroup-spacing solid $body-background;
|
119
|
-
}
|
112
|
+
|
113
|
+
&:last-child {
|
114
|
+
margin-bottom: 0;
|
120
115
|
}
|
121
116
|
}
|
122
117
|
}
|
@@ -134,10 +129,7 @@ $buttongroup-expand-max: 6 !default;
|
|
134
129
|
@else {
|
135
130
|
width: auto;
|
136
131
|
}
|
137
|
-
|
138
|
-
&:not(:last-child) {
|
139
|
-
margin-#{$global-right}: $buttongroup-spacing;
|
140
|
-
}
|
132
|
+
margin-bottom: 0;
|
141
133
|
}
|
142
134
|
}
|
143
135
|
|
@@ -195,7 +187,7 @@ $buttongroup-expand-max: 6 !default;
|
|
195
187
|
|
196
188
|
#{$buttongroup-child-selector} {
|
197
189
|
display: block;
|
198
|
-
margin-right: 0;
|
190
|
+
margin-#{$global-right}: 0;
|
199
191
|
}
|
200
192
|
}
|
201
193
|
}
|