vendor/assets/javascripts/uikit/core/utility.js in uikit2-rails-0.1.6 vs vendor/assets/javascripts/uikit/core/utility.js in uikit2-rails-0.1.7
- old
+ new
@@ -1,6 +1,6 @@
-/*! UIkit 2.25.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
+/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var stacks = [];
@@ -61,23 +61,30 @@
var $this = this, columns = this.element.children();
UI.Utils.stackMargin(columns, this.options);
- if (!this.options.rowfirst) {
+ if (!this.options.rowfirst || !columns.length) {
return this;
}
// Mark first column elements
- var pos_cache = columns.removeClass(this.options.rowfirst).filter(':visible').first().position();
+ var group = {}, minleft = false;
- if (pos_cache) {
- columns.each(function() {
- UI.$(this)[UI.$(this).position().left == pos_cache.left ? 'addClass':'removeClass']($this.options.rowfirst);
- });
- }
+ columns.removeClass(this.options.rowfirst).each(function(offset, $ele){
+ $ele = UI.$(this);
+
+ if (this.style.display != 'none') {
+ offset = $ele.offset().left;
+ ((group[offset] = group[offset] || []) && group[offset]).push(this);
+ minleft = minleft === false ? offset : Math.min(minleft, offset);
+ }
+ });
+
+ UI.$(group[minleft]).addClass(this.options.rowfirst);
+
return this;
}
});
@@ -158,33 +165,44 @@
options = UI.$.extend({
'cls': 'uk-margin-small-top'
}, options);
- options.cls = options.cls;
-
elements = UI.$(elements).removeClass(options.cls);
- var skip = false,
- firstvisible = elements.filter(":visible:first"),
- offset = firstvisible.length ? (firstvisible.position().top + firstvisible.outerHeight()) - 1 : false; // (-1): weird firefox bug when parent container is display:flex
+ var min = false;
- if (offset === false || elements.length == 1) return;
+ elements.each(function(offset, height, pos, $ele){
- elements.each(function() {
+ $ele = UI.$(this);
- var column = UI.$(this);
+ if ($ele.css('display') != 'none') {
- if (column.is(":visible")) {
+ offset = $ele.offset();
+ height = $ele.outerHeight();
+ pos = offset.top + height;
- if (skip) {
- column.addClass(options.cls);
- } else {
+ $ele.data({
+ 'ukMarginPos': pos,
+ 'ukMarginTop': offset.top
+ });
- if (column.position().top >= offset) {
- skip = column.addClass(options.cls);
- }
+ if (min === false || (offset.top < min.top) ) {
+
+ min = {
+ top : offset.top,
+ left : offset.left,
+ pos : pos
+ };
}
+ }
+
+ }).each(function($ele) {
+
+ $ele = UI.$(this);
+
+ if ($ele.css('display') != 'none' && $ele.data('ukMarginTop') > min.top && $ele.data('ukMarginPos') > min.pos) {
+ $ele.addClass(options.cls);
}
});
};
UI.Utils.matchHeights = function(elements, options) {