UNPKG

jspanel4

Version:

A JavaScript library to create highly configurable multifunctional floating panels that can also be used as modal, tooltip, hint or contextmenu

1 lines 1.94 kB
"use strict";jsPanel.contextmenu||(jsPanel.contextmenu={version:"1.2.0",date:"2021-01-13 10:40",defaults:{dragit:!1,resizeit:!1,header:!1,headerControls:"none",closeOnMouseleave:!0},cmOverflow:function(e){var n=e.cmEvent.clientX,t=e.cmEvent.clientY,o=e.offsetWidth,s=e.offsetHeight,l=window.innerWidth-(n+o),a=window.innerHeight-(t+s);l<0&&(e.style.left=n+(window.scrollX||window.pageXOffset)-o+"px"),a<0&&(e.style.top=t+(window.scrollY||window.pageYOffset)-s+"px")},create:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"contextmenu";n.paneltype="contextmenu";var o=n.target;if(!o)return!1;"string"==typeof o&&(o=document.querySelector(o)),o.addEventListener(t,function(t){t.preventDefault(),document.querySelectorAll(".jsPanel-contextmenu").forEach(function(e){e.close()});var s=(t.pageX||t.touches[0].pageX)+"px",l=(t.pageY||t.touches[0].pageY)+"px",a=n;n.config&&delete(a=Object.assign({},n.config,n)).config,a=Object.assign({},e.defaults,a,{position:!1,container:"body"}),jsPanel.create(a,function(e){jsPanel.setStyle(e,{position:"absolute",left:s,top:l});var n=o.closest(".jsPanel-modal");if(n)e.style.zIndex=n.style.zIndex;else{var c=o.closest(".jsPanel");c&&c.front(),e.style.zIndex=jsPanel.zi.next()}e.cmEvent=t,jsPanel.contextmenu.cmOverflow(e),a.closeOnMouseleave&&e.addEventListener("mouseleave",function(){e.close()},!1),jsPanel.pointerdown.forEach(function(n){e.addEventListener(n,function(e){e.stopPropagation()})})})},!1)}},jsPanel.ajaxAlwaysCallbacks.push(function(e,n){n&&n.classList&&n.classList.contains("jsPanel-contextmenu")&&jsPanel.contextmenu.cmOverflow(n)}),jsPanel.pointerdown.forEach(function(e){document.addEventListener(e,function(e){document.querySelectorAll(".jsPanel-contextmenu").forEach(function(n){e.target.closest(".jsPanel-contextmenu")||n.close()})},!1)})),"undefined"!=typeof module&&(module.exports=jsPanel);