UNPKG

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.97 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/csstransition"),r=require("primereact/hooks"),o=require("primereact/portal"),i=require("primereact/utils"),u=require("primereact/ripple");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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 c=a(e),s=l(t);function m(){return m=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},m.apply(this,arguments)}function p(e){if(Array.isArray(e))return e}function f(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,l=[],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)&&(l.push(r.value),l.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return l}}function d(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 b(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}function g(){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 h(e,t){return p(e)||f(e,t)||b(e,t)||g()}var y={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 i.ObjectUtils.getMergedProps(e,y.defaultProps)},getOtherProps:function(e){return i.ObjectUtils.getDiffProps(e,y.defaultProps)}},v=c.memo((function(e){var t=h(c.useState(null),2),o=t[0],l=t[1],a=c.useRef(null),s=e.root||!e.resetMenu;!0===e.resetMenu&&null!==o&&l(null);var m=function(t,n){n.disabled||e.isMobileMode?t.preventDefault():l(n)},p=function(t,n){n.disabled?t.preventDefault():(n.url||t.preventDefault(),n.command&&n.command({originalEvent:t,item:n}),e.isMobileMode&&n.items&&l(o&&n===o?null:n),n.items||e.onLeafClick(t))},f=function(){if(!e.isMobileMode){var t=a.current.parentElement,n=i.DomHandler.getOffset(t),r=i.DomHandler.getViewport(),o=a.current.offsetParent?a.current.offsetWidth:i.DomHandler.getHiddenElementOuterWidth(a.current),u=i.DomHandler.getOuterWidth(t.children[0]),l=parseInt(n.top,10)+a.current.offsetHeight-i.DomHandler.getWindowScrollTop();a.current.style.top=l>r.height?r.height-l+"px":"0px",a.current.style.left=parseInt(n.left,10)+u+o>r.width-i.DomHandler.calculateScrollbarWidth()?-1*o+"px":u+"px"}};r.useUpdateEffect((function(){s&&f()}));var d=function(e){return c.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},b=function(t){return t.items?c.createElement(v,{menuProps:e.menuProps,model:t.items,resetMenu:t!==o,onLeafClick:e.onLeafClick,isMobileMode:e.isMobileMode}):null},g=function(t,n){if(!1===t.visible)return null;var r=o===t,l=t.label+"_"+n,a=i.classNames("p-menuitem",{"p-menuitem-active":r},t.className),s=i.classNames("p-menuitem-link",{"p-disabled":t.disabled}),f=i.classNames("p-menuitem-icon",t.icon),d="p-submenu-icon pi pi-angle-right",g=i.IconUtils.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:e.menuProps}),h=t.label&&c.createElement("span",{className:"p-menuitem-text"},t.label),y=t.items&&c.createElement("span",{className:d}),v=b(t),x=c.createElement("a",{href:t.url||"#",className:s,target:t.target,onClick:function(e){return p(e,t)},role:"menuitem","aria-haspopup":null!=t.items,"aria-disabled":t.disabled},g,h,y,c.createElement(u.Ripple,null));t.template&&(x=i.ObjectUtils.getJSXElement(t.template,t,{onClick:function(e){return p(e,t)},className:s,labelClassName:"p-menuitem-text",iconClassName:f,submenuIconClassName:d,element:x,props:e,active:r}));return c.createElement("li",{key:l,role:"none",id:t.id,className:a,style:t.style,onMouseEnter:function(e){return m(e,t)}},x,v)},y=function(e,t){return e.separator?d(t):g(e,t)},x=i.classNames({"p-submenu-list":!e.root}),E=e.model?e.model.map(y):null;return c.createElement(n.CSSTransition,{nodeRef:a,classNames:"p-contextmenusub",in:s,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){f()}},c.createElement("ul",{ref:a,className:x},E))}));v.displayName="ContextMenuSub";var x=c.memo(c.forwardRef((function(e,t){var u=y.getProps(e),l=h(c.useState(!1),2),a=l[0],p=l[1],f=h(c.useState(!1),2),d=f[0],b=f[1],g=h(c.useState(!1),2),x=g[0],E=g[1],M=h(c.useState(null),2),O=M[0],H=M[1],S=c.useRef(null),N=c.useRef(null),P=c.useRef(null),I=r.useMatchMedia("screen and (max-width: ".concat(u.breakpoint,")"),!!u.breakpoint),k=h(r.useEventListener({type:"click",listener:function(e){$(e)&&2!==e.button&&(_(e),E(!0))}}),2),w=k[0],D=k[1],j=h(r.useEventListener({type:"contextmenu",listener:function(e){A(e)}}),1)[0],C=h(r.useResizeListener({listener:function(e){a&&!i.DomHandler.isTouchDevice()&&_(e)}}),2),U=C[0],T=C[1],L=function(){if(!P.current){P.current=i.DomHandler.createInlineStyle(s.default.nonce);var e="".concat(O),t="\n@media screen and (max-width: ".concat(u.breakpoint,") {\n .p-contextmenu[").concat(e,"] > ul {\n max-height: ").concat(u.scrollHeight,";\n overflow: ").concat(u.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=i.DomHandler.removeInlineStyle(P.current)},Z=function(){E(!1)},q=function(){E(!1)},A=function(e){e.stopPropagation(),e.preventDefault(),N.current=e,a?b(!0):(p(!0),u.onShow&&u.onShow(N.current))},_=function(e){N.current=e,p(!1),b(!1),u.onHide&&u.onHide(N.current)},W=function(){u.autoZIndex&&i.ZIndexUtils.set("menu",S.current,s.default.autoZIndex,u.baseZIndex||s.default.zIndex.menu),V(N.current),O&&u.breakpoint&&(S.current.setAttribute(O,""),L())},z=function(){B()},X=function(){F(),i.ZIndexUtils.clear(S.current)},J=function(){i.ZIndexUtils.clear(S.current),R()},V=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=S.current.offsetParent?S.current.offsetWidth:i.DomHandler.getHiddenElementOuterWidth(S.current),o=S.current.offsetParent?S.current.offsetHeight:i.DomHandler.getHiddenElementOuterHeight(S.current),u=i.DomHandler.getViewport();t+r-document.body.scrollLeft>u.width&&(t-=r),n+o-document.body.scrollTop>u.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"}},Y=function(e){E(!0),_(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()};r.useMountEffect((function(){u.global&&j(),u.breakpoint&&!O&&H(i.UniqueComponentId())})),r.useUpdateEffect((function(){return O&&S.current&&(S.current.setAttribute(O,""),L()),function(){R()}}),[O,u.breakpoint]),r.useUpdateEffect((function(){a?(p(!1),b(!1),E(!0)):d||a||!x||A(N.current)}),[d]),r.useUnmountEffect((function(){i.ZIndexUtils.clear(S.current)})),c.useImperativeHandle(t,(function(){return{props:u,show:A,hide:_,getElement:function(){return S.current}}}));var G,K,Q=(G=y.getOtherProps(u),K=i.classNames("p-contextmenu p-component",u.className,{"p-input-filled":"filled"===s.default.inputStyle,"p-ripple-disabled":!1===s.default.ripple}),c.createElement(n.CSSTransition,{nodeRef:S,classNames:"p-contextmenu",in:a,timeout:{enter:250,exit:0},options:u.transitionOptions,unmountOnExit:!0,onEnter:W,onEntered:z,onExit:X,onExited:J},c.createElement("div",m({ref:S,id:u.id,className:K,style:u.style},G,{onClick:Z,onMouseEnter:q}),c.createElement(v,{menuProps:u,model:u.model,root:!0,resetMenu:x,onLeafClick:Y,isMobileMode:I}))));return c.createElement(o.Portal,{element:Q,appendTo:u.appendTo})})));x.displayName="ContextMenu",exports.ContextMenu=x;