From 606c57d8c312685971a9e867d279209130cb8cba Mon Sep 17 00:00:00 2001 From: mikekoser Date: Tue, 14 Oct 2014 11:54:18 -0400 Subject: [PATCH 1/4] Added ability to supply a different element as the scroll parent for scroll locking functionality (e.g. html instead of body). Added ability to supply additional css properties to apply to the scroll parent when a popup is closed and scroll locking is enabled. --- jquery.popupoverlay.js | 1435 ++++++++++++++++++++-------------------- 1 file changed, 723 insertions(+), 712 deletions(-) diff --git a/jquery.popupoverlay.js b/jquery.popupoverlay.js index 9da8874..2c71722 100644 --- a/jquery.popupoverlay.js +++ b/jquery.popupoverlay.js @@ -5,754 +5,765 @@ * @requires jQuery v1.7.1+ * @link http://vast-engineering.github.com/jquery-popup-overlay/ */ -;(function ($) { - - var $window = $(window); - var options = {}; - var zindexvalues = []; - var lastclicked = []; - var scrollbarwidth; - var bodymarginright = null; - var opensuffix = '_open'; - var closesuffix = '_close'; - var stack = []; - var transitionsupport = null; - var opentimer; - var iOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent); - - var methods = { - - _init: function (el) { - var $el = $(el); - var options = $el.data('popupoptions'); - lastclicked[el.id] = false; - zindexvalues[el.id] = 0; - - if (!$el.data('popup-initialized')) { - $el.attr('data-popup-initialized', 'true'); - methods._initonce(el); - } - - if (options.autoopen) { - setTimeout(function() { - methods.show(el, 0); - }, 0); - } - }, - - _initonce: function (el) { - var $el = $(el); - var $body = $('body'); - var $wrapper; - var options = $el.data('popupoptions'); - var css; - - bodymarginright = parseInt($body.css('margin-right'), 10); - transitionsupport = document.body.style.webkitTransition !== undefined || +; (function ($) { + + var $window = $(window); + var options = {}; + var zindexvalues = []; + var lastclicked = []; + var scrollbarwidth; + var bodymarginright = null; + var opensuffix = '_open'; + var closesuffix = '_close'; + var stack = []; + var transitionsupport = null; + var opentimer; + var iOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent); + + var methods = { + + _init: function (el) { + var $el = $(el); + var options = $el.data('popupoptions'); + lastclicked[el.id] = false; + zindexvalues[el.id] = 0; + + if (!$el.data('popup-initialized')) { + $el.attr('data-popup-initialized', 'true'); + methods._initonce(el); + } + + if (options.autoopen) { + setTimeout(function () { + methods.show(el, 0); + }, 0); + } + }, + + _initonce: function (el) { + var $el = $(el), + $body = $('body'), + $wrapper, + options = $el.data('popupoptions'), + $scrollParent = $(options.scrollparent), + css; + + bodymarginright = parseInt($body.css('margin-right'), 10); + transitionsupport = document.body.style.webkitTransition !== undefined || document.body.style.MozTransition !== undefined || document.body.style.msTransition !== undefined || document.body.style.OTransition !== undefined || document.body.style.transition !== undefined; - if (options.type == 'tooltip') { - options.background = false; - options.scrolllock = false; - } - - if (options.backgroundactive) { - options.background = false; - options.blur = false; - options.scrolllock = false; - } - - if (options.scrolllock) { - // Calculate the browser's scrollbar width dynamically - var parent; - var child; - if (typeof scrollbarwidth === 'undefined') { - parent = $('
').appendTo('body'); - child = parent.children(); - scrollbarwidth = child.innerWidth() - child.height(99).innerWidth(); - parent.remove(); - } - } - - if (!$el.attr('id')) { - $el.attr('id', 'j-popup-' + parseInt((Math.random() * 100000000), 10)); - } - - $el.addClass('popup_content'); - - $body.prepend(el); - - $el.wrap('