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) {