primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 8.96 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.contextmenu=function(e,t,n,r,o,i,l,u){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var s=c(t),m=a(n);function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e){if(Array.isArray(e))return e}function d(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,l,u=[],a=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=i.call(n)).done)&&(u.push(r.value),u.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw o}}return u}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function g(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function y(e,t){return f(e)||d(e,t)||g(e,t)||h()}var v={defaultProps:{__TYPE:"ContextMenu",id:null,model:null,style:null,className:null,global:!1,autoZIndex:!0,baseZIndex:0,breakpoint:void 0,scrollHeight:"400px",appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return l.ObjectUtils.getMergedProps(e,v.defaultProps)},getOtherProps:function(e){return l.ObjectUtils.getDiffProps(e,v.defaultProps)}},x=s.memo((function(e){var t=y(s.useState(null),2),n=t[0],i=t[1],a=s.useRef(null),c=e.root||!e.resetMenu;!0===e.resetMenu&&null!==n&&i(null);var m=function(t,n){n.disabled||e.isMobileMode?t.preventDefault():i(n)},p=function(t,r){r.disabled?t.preventDefault():(r.url||t.preventDefault(),r.command&&r.command({originalEvent:t,item:r}),e.isMobileMode&&r.items&&i(n&&r===n?null:r),r.items||e.onLeafClick(t))},f=function(){if(!e.isMobileMode){var t=a.current.parentElement,n=l.DomHandler.getOffset(t),r=l.DomHandler.getViewport(),o=a.current.offsetParent?a.current.offsetWidth:l.DomHandler.getHiddenElementOuterWidth(a.current),i=l.DomHandler.getOuterWidth(t.children[0]),u=parseInt(n.top,10)+a.current.offsetHeight-l.DomHandler.getWindowScrollTop();a.current.style.top=u>r.height?r.height-u+"px":"0px",a.current.style.left=parseInt(n.left,10)+i+o>r.width-l.DomHandler.calculateScrollbarWidth()?-1*o+"px":i+"px"}};o.useUpdateEffect((function(){c&&f()}));var d=function(e){return s.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},b=function(t){return t.items?s.createElement(x,{menuProps:e.menuProps,model:t.items,resetMenu:t!==n,onLeafClick:e.onLeafClick,isMobileMode:e.isMobileMode}):null},g=function(t,r){if(!1===t.visible)return null;var o=n===t,i=t.label+"_"+r,a=l.classNames("p-menuitem",{"p-menuitem-active":o},t.className),c=l.classNames("p-menuitem-link",{"p-disabled":t.disabled}),f=l.classNames("p-menuitem-icon",t.icon),d="p-submenu-icon pi pi-angle-right",g=l.IconUtils.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:e.menuProps}),h=t.label&&s.createElement("span",{className:"p-menuitem-text"},t.label),y=t.items&&s.createElement("span",{className:d}),v=b(t),x=s.createElement("a",{href:t.url||"#",className:c,target:t.target,onClick:function(e){return p(e,t)},role:"menuitem","aria-haspopup":null!=t.items,"aria-disabled":t.disabled},g,h,y,s.createElement(u.Ripple,null));t.template&&(x=l.ObjectUtils.getJSXElement(t.template,t,{onClick:function(e){return p(e,t)},className:c,labelClassName:"p-menuitem-text",iconClassName:f,submenuIconClassName:d,element:x,props:e,active:o}));return s.createElement("li",{key:i,role:"none",id:t.id,className:a,style:t.style,onMouseEnter:function(e){return m(e,t)}},x,v)},h=function(e,t){return e.separator?d(t):g(e,t)},v=l.classNames({"p-submenu-list":!e.root}),E=e.model?e.model.map(h):null;return s.createElement(r.CSSTransition,{nodeRef:a,classNames:"p-contextmenusub",in:c,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){f()}},s.createElement("ul",{ref:a,className:v},E))}));x.displayName="ContextMenuSub";var E=s.memo(s.forwardRef((function(e,t){var n=v.getProps(e),u=y(s.useState(!1),2),a=u[0],c=u[1],f=y(s.useState(!1),2),d=f[0],b=f[1],g=y(s.useState(!1),2),h=g[0],E=g[1],M=y(s.useState(null),2),O=M[0],H=M[1],S=s.useRef(null),N=s.useRef(null),P=s.useRef(null),I=o.useMatchMedia("screen and (max-width: ".concat(n.breakpoint,")"),!!n.breakpoint),k=y(o.useEventListener({type:"click",listener:function(e){$(e)&&2!==e.button&&(W(e),E(!0))}}),2),w=k[0],D=k[1],j=y(o.useEventListener({type:"contextmenu",listener:function(e){_(e)}}),1)[0],C=y(o.useResizeListener({listener:function(e){a&&!l.DomHandler.isTouchDevice()&&W(e)}}),2),U=C[0],T=C[1],L=function(){if(!P.current){P.current=l.DomHandler.createInlineStyle(m.default.nonce);var e="".concat(O),t="\n@media screen and (max-width: ".concat(n.breakpoint,") {\n .p-contextmenu[").concat(e,"] > ul {\n max-height: ").concat(n.scrollHeight,";\n overflow: ").concat(n.scrollHeight?"auto":"",";\n }\n\n .p-contextmenu[").concat(e,"] .p-submenu-list {\n position: relative;\n }\n\n .p-contextmenu[").concat(e,"] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-contextmenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-contextmenu[").concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n }\n}\n');P.current.innerHTML=t}},R=function(){P.current=l.DomHandler.removeInlineStyle(P.current)},Z=function(){E(!1)},A=function(){E(!1)},_=function(e){e.stopPropagation(),e.preventDefault(),N.current=e,a?b(!0):(c(!0),n.onShow&&n.onShow(N.current))},W=function(e){N.current=e,c(!1),b(!1),n.onHide&&n.onHide(N.current)},z=function(){n.autoZIndex&&l.ZIndexUtils.set("menu",S.current,m.default.autoZIndex,n.baseZIndex||m.default.zIndex.menu),Y(N.current),O&&n.breakpoint&&(S.current.setAttribute(O,""),L())},X=function(){B()},J=function(){F(),l.ZIndexUtils.clear(S.current)},V=function(){l.ZIndexUtils.clear(S.current),R()},Y=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=S.current.offsetParent?S.current.offsetWidth:l.DomHandler.getHiddenElementOuterWidth(S.current),o=S.current.offsetParent?S.current.offsetHeight:l.DomHandler.getHiddenElementOuterHeight(S.current),i=l.DomHandler.getViewport();t+r-document.body.scrollLeft>i.width&&(t-=r),n+o-document.body.scrollTop>i.height&&(n-=o),t<document.body.scrollLeft&&(t=document.body.scrollLeft),n<document.body.scrollTop&&(n=document.body.scrollTop),S.current.style.left=t+"px",S.current.style.top=n+"px"}},q=function(e){E(!0),W(e),e.stopPropagation()},$=function(e){return S&&S.current&&!(S.current.isSameNode(e.target)||S.current.contains(e.target))},B=function(){U(),w()},F=function(){T(),D()};o.useMountEffect((function(){n.global&&j(),n.breakpoint&&!O&&H(l.UniqueComponentId())})),o.useUpdateEffect((function(){return O&&S.current&&(S.current.setAttribute(O,""),L()),function(){R()}}),[O,n.breakpoint]),o.useUpdateEffect((function(){a?(c(!1),b(!1),E(!0)):d||a||!h||_(N.current)}),[d]),o.useUnmountEffect((function(){l.ZIndexUtils.clear(S.current)})),s.useImperativeHandle(t,(function(){return{props:n,show:_,hide:W,getElement:function(){return S.current}}}));var G,K,Q=(G=v.getOtherProps(n),K=l.classNames("p-contextmenu p-component",n.className,{"p-input-filled":"filled"===m.default.inputStyle,"p-ripple-disabled":!1===m.default.ripple}),s.createElement(r.CSSTransition,{nodeRef:S,classNames:"p-contextmenu",in:a,timeout:{enter:250,exit:0},options:n.transitionOptions,unmountOnExit:!0,onEnter:z,onEntered:X,onExit:J,onExited:V},s.createElement("div",p({ref:S,id:n.id,className:K,style:n.style},G,{onClick:Z,onMouseEnter:A}),s.createElement(x,{menuProps:n,model:n.model,root:!0,resetMenu:h,onLeafClick:q,isMobileMode:I}))));return s.createElement(i.Portal,{element:Q,appendTo:n.appendTo})})));return E.displayName="ContextMenu",e.ContextMenu=E,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.csstransition,primereact.hooks,primereact.portal,primereact.utils,primereact.ripple);