From a3e9793c110f1a0d7d7fed6049165927b000071e Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 29 Apr 2016 18:17:01 +0100 Subject: [PATCH] Bug 16400: Update the fixFloat plugin I have updated it just in case it fixed the issue. I don't think there are big changes between our current version and this one, so keep it up-to-date Signed-off-by: Owen Leonard Signed-off-by: Nick Clemens --- .../lib/jquery/plugins/jquery.fixFloat.js | 115 ++++++++++----------- 1 file changed, 54 insertions(+), 61 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/lib/jquery/plugins/jquery.fixFloat.js b/koha-tmpl/intranet-tmpl/lib/jquery/plugins/jquery.fixFloat.js index 0a6fde0..db0454c 100644 --- a/koha-tmpl/intranet-tmpl/lib/jquery/plugins/jquery.fixFloat.js +++ b/koha-tmpl/intranet-tmpl/lib/jquery/plugins/jquery.fixFloat.js @@ -1,68 +1,61 @@ /* Source: http://www.webspeaks.in/2011/07/new-gmail-like-floating-toolbar-jquery.html Revision: http://jsfiddle.net/pasmalin/AyjeZ/ */ -(function($){ - $.fn.fixFloat = function(options){ +(function ($, window) { + "use strict"; + $.fn.fixFloat = function (options) { + var defaults = { + enabled: true + }; + options = $.extend(defaults, options); + var tbh = $(this); + var originalOffset = tbh.position().top; - var defaults = { - enabled: true - }; - var options = $.extend(defaults, options); - - var offsetTop; /**Distance of the element from the top of window**/ - var s; /**Scrolled distance from the top of window through which we have moved**/ - var fixMe = true; - var repositionMe = true; - - var tbh = $(this); - var originalOffset = tbh.position().top; /**Get the actual distance of the element from the top mychange:change to position better work**/ - - if (tbh.css('position')!='absolute') { - var tbhBis = $("
"); - tbhBis.css({"display":tbh.css("display"),"visibility":"hidden"}); - tbhBis.width(tbh.outerWidth(true)); - tbhBis.height(tbh.outerHeight(true)); - tbh.after(tbhBis); - tbh.width(tbh.width()); - tbh.css({'position':'absolute'}); - } - - if(options.enabled){ - $(window).scroll(function(){ - var offsetTop = tbh.offset().top; /**Get the current distance of the element from the top **/ - var s = parseInt($(window).scrollTop(), 10); /**Get the from the top of wondow through which we have scrolled**/ - var fixMe = true; - if(s > offsetTop){ - fixMe = true; - }else{ - fixMe = false; + if (tbh.css('position') !== 'absolute') { + var tbhBis = tbh.clone(); + tbhBis.css({ + "display": tbh.css("display"), + "visibility": "hidden" + }); + tbhBis.width(tbh.outerWidth(true)); + tbhBis.height(tbh.outerHeight(true)); + tbh.after(tbhBis); + tbh.width(tbh.width()); + var tbl = tbh.find("th,td"); + if (tbl.length > 0) { + tbl.each(function () { + var $elt = $(this); + $elt.width($elt.outerWidth(true)); + }); + } + tbh.css({ + 'position': 'absolute', + 'top': originalOffset + }); } + tbh.css({ + 'z-index': 1000 + }); - if(s < originalOffset){ - repositionMe = true; - }else{ - repositionMe = false; + if (options.enabled) { + $(window).scroll(function () { + var offsetTop = tbh.offset().top; + var s = parseInt($(window).scrollTop(), 10); + var fixMe = (s > offsetTop); + var repositionMe = (s < originalOffset); + if (fixMe) { + tbh.css({ + 'position': 'fixed', + 'top': '0' + }); + } + if (repositionMe) { + tbh.css({ + 'position': 'absolute', + 'top': originalOffset + }); + } + }); } - - if(fixMe){ - var cssObj = { - 'position' : 'fixed', - 'top' : '0px', - 'z-index' : '1000' - } - tbh.css(cssObj); - tbh.addClass("floating"); - } - if(repositionMe){ - var cssObj = { - 'position' : 'absolute', - 'top' : originalOffset, - 'z-index' : '1' - } - tbh.css(cssObj); - tbh.removeClass("floating"); - } - }); - } - }; -})(jQuery); \ No newline at end of file + }; +})(jQuery, window); -- 2.1.4