Skip to content

Instantly share code, notes, and snippets.

@rhysgodfrey
Last active May 19, 2016 14:01
Show Gist options
  • Save rhysgodfrey/04abccfb98c5f7ddce73 to your computer and use it in GitHub Desktop.
Save rhysgodfrey/04abccfb98c5f7ddce73 to your computer and use it in GitHub Desktop.
Change reflow in 9.0
(function ($, global, undef) {
function attachHandlers(l, k) {
l.each(function() {
var f = $
, e = window
, c = f.extend({}, k || {})
, d = f(this)
, a = !1
, b = f("<div></div>").addClass(c.cssClass).css("display", "none").insertBefore(d).end()
, h = null
, g = function() {
a && b.width() >= c.minWidth ? s() : !a && d.width() < c.minWidth && q()
}
, q = function() {
h = [];
var g = 0;
d.find(c.children).each(function() {
var a = f(this);
h.push({
element: a,
parent: a.parent(),
parentOrder: u(a),
responsiveOrder: r(a),
originalOrder: g++
})
});
h.sort(function(a, b) {
return a.responsiveOrder == b.responsiveOrder ? a.parentOrder - b.parentOrder : a.responsiveOrder - b.responsiveOrder
});
f.each(h, function() {
b.append(this.element)
});
b.show();
d.hide();
a = !0
}
, s = function() {
h.sort(function(a, b) {
return a.originalOrder - b.originalOrder
});
f.each(h, function() {
this.parent.append(this.element)
});
d.show();
b.hide();
a = !1
}
, r = function(a) {
a = a.attr("class").split(" ");
for (var b = 0; b < a.length; b++) {
if ("responsive-shown" ==
a[b])
return 1;
if (0 == a[b].indexOf("responsive-")) {
var c = parseInt(a[b].substr(11), 10);
if (!isNaN(c))
return c
}
}
return 1E4
}
, u = function(a) {
if (c.parents && 0 < c.parents.length) {
a = a.parent();
for (var b = 0; b < c.parents.length; b++)
if (a.hasClass(c.parents[b]))
return b
}
return 1E4
}
;
f(e).on("resized", g);
g()
})
};
function clearDefaultHandlers(singleColumnCssClass) {
var registeredEvents = $._data(window, "events").resized;
for(var i = 0; i < registeredEvents.length; i++) {
var expectedFunctionValue = "function (){a&&b.width()>=c.minWidth?s():!a&&d.width()<c.minWidth&&q()}";
var functionValue = registeredEvents[i].handler.toString();
if (expectedFunctionValue === functionValue) {
registeredEvents[i].handler = function () {
};
}
}
};
$.fn.overrideReflowContainer = function (options) {
var context = $.extend({}, $.fn.overrideReflowContainer.defaults, options || {});
context.selection = this;
clearDefaultHandlers(context.singleColumnCssClass);
this.each(function () {
var element = $(this);
var singleColumnCssClass = context.singleColumnCssClass + " " + element.attr("class").replace(context.containerCssClass, "");
attachHandlers(element, {
cssClass: singleColumnCssClass,
minWidth: context.minWidth,
children: context.children,
parents: context.parents
})
})
};
$.fn.overrideReflowContainer.defaults = {
containerCssClass: "evolution-reflow-container",
singleColumnCssClass: "single-column",
minWidth: 570,
children: ".content-fragment",
parents: "header content left-sidebar split-sidebar-left split-sidebar-right right-sidebar footer".split(" ")
};
})(jQuery, window);
$('.evolution-reflow-container').overrideReflowContainer({
minWidth: 890
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment