diff --git a/wire/modules/Jquery/JqueryUI/modal.js b/wire/modules/Jquery/JqueryUI/modal.js index d3f1b4c3..a966e5b1 100644 --- a/wire/modules/Jquery/JqueryUI/modal.js +++ b/wire/modules/Jquery/JqueryUI/modal.js @@ -121,22 +121,53 @@ function pwModalWindowSettings(name) { .css('padding-top', 0) .prepend("") .find('.ui-icon').remove(); - - if(frameElement && parent.jQuery != "undefined" && parent.jQuery('.ui-dialog').length) { + if(frameElement) { // dialog on top of dialog - parent.jQuery('.ui-dialog .ui-button').addClass('pw-modal-hidden').hide(); - parent.jQuery('.ui-dialog-buttonpane').css('margin-top', '-10px'); - jQuery('body').css('overflow', 'hidden'); + if(typeof parent.jQuery !== 'undefined') { + // jQuery available in parent + if(parent.jQuery('.ui-dialog').length) { + parent.jQuery('.ui-dialog .ui-button').addClass('pw-modal-hidden').hide(); + parent.jQuery('.ui-dialog-buttonpane').css('margin-top', '-10px'); + jQuery('body').css('overflow', 'hidden'); + } + } else { + // jQuery NOT available in parent + if(parent.document.querySelector('.ui-dialog')) { + var parentButtons = parent.document.querySelectorAll('.ui-dialog .ui-button'); + var i; + for(i = 0; i < parentButtons.length; i++) { + parentButtons[i].classList.add('pw-modal-hidden'); + parentButtons[i].style.display = 'none'; + } + var parentPanes = parent.document.querySelectorAll('.ui-dialog-buttonpane'); + for(i = 0; i < parentPanes.length; i++) { + parentPanes[i].style.marginTop = '-10px'; + } + document.querySelector('body').style.overflow = 'hidden'; + } + } } }, beforeClose: function(event, ui) { - if(parent.jQuery != "undefined" && parent.jQuery('.ui-dialog').length) { + if(typeof parent.jQuery != 'undefined') { + if(parent.jQuery('.ui-dialog').length) { + if(frameElement) { + // dialog on top of another dialog + parent.jQuery('.pw-modal-hidden').show(); + jQuery('body').css('overflow', ''); + } else if(options.hideOverflow) { + parent.jQuery('body').css('overflow', ''); + } + } + } else { + // no jQuery available if(frameElement) { // dialog on top of another dialog - parent.jQuery(".pw-modal-hidden").show(); - jQuery('body').css('overflow', ''); + var parentModalHidden = parent.document.querySelector('.pw-modal-hidden'); + if(parentModalHidden) parentModalHidden.style.display = 'block'; + document.querySelector('body').style.overflow = ''; } else if(options.hideOverflow) { - parent.jQuery('body').css('overflow', ''); + parent.document.querySelector('body').style.overflow = ''; } } } diff --git a/wire/modules/Jquery/JqueryUI/modal.min.js b/wire/modules/Jquery/JqueryUI/modal.min.js index 7b4607b8..e41cc0a4 100644 --- a/wire/modules/Jquery/JqueryUI/modal.min.js +++ b/wire/modules/Jquery/JqueryUI/modal.min.js @@ -1 +1 @@ -var pwModalWindows=[];function pwModalWindowSettings(name){var modal=ProcessWire.config.modals[name];if(typeof modal=="undefined")modal=ProcessWire.config.modals["medium"];modal=modal.split(",");var options={modal:true,draggable:false,resizable:true,hide:250,show:100,hideOverflow:true,closeOnEscape:false};if(modal.length>=4){for(var n=4;n").find(".ui-icon").remove();if(frameElement&&parent.jQuery!="undefined"&&parent.jQuery(".ui-dialog").length){parent.jQuery(".ui-dialog .ui-button").addClass("pw-modal-hidden").hide();parent.jQuery(".ui-dialog-buttonpane").css("margin-top","-10px");jQuery("body").css("overflow","hidden")}},beforeClose:function(event,ui){if(parent.jQuery!="undefined"&&parent.jQuery(".ui-dialog").length){if(frameElement){parent.jQuery(".pw-modal-hidden").show();jQuery("body").css("overflow","")}else if(options.hideOverflow){parent.jQuery("body").css("overflow","")}}}}}function pwModalWindow(href,options,size){var $iframe,url;for(var n=0;n<=pwModalWindows.length;n++){$iframe=pwModalWindows[n];if($iframe==null)continue;if($iframe.dialog("isOpen"))continue;$iframe.dialog("destroy").remove();pwModalWindows[n]=null}if(href.indexOf("modal=")>0){url=href}else{url=href+(href.indexOf("?")>-1?"&":"?")+"modal=1"}$iframe=jQuery('');$iframe.attr("id","pw-modal-window-"+(pwModalWindows.length+1));pwModalWindows[pwModalWindows.length]=$iframe;if(typeof size=="undefined"||size.length==0)size="large";var settings=pwModalWindowSettings(size);if(settings==null){alert("Unknown modal setting: "+size);return $iframe}if(typeof options!="undefined")jQuery.extend(settings,options);$iframe.on("dialogopen",function(event,ui){jQuery(document).trigger("pw-modal-opened",{event:event,ui:ui})});$iframe.on("dialogclose",function(event,ui){jQuery(document).trigger("pw-modal-closed",{event:event,ui:ui})});$iframe.dialog(settings);$iframe.data("settings",settings);$iframe.load(function(){if(typeof settings.title=="undefined"||!settings.title){var title=jQuery("