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) • 12.1 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.menu=function(e,n,t,r,a,i,o,l,u,c){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function p(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var m=p(n),d=s(t);function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function b(e,n){if("object"!=f(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=f(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}function y(e){var n=b(e,"string");return"symbol"==f(n)?n:n+""}function v(e,n,t){return(n=y(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function g(){return g=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},g.apply(null,arguments)}function h(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function O(e){if(Array.isArray(e))return h(e)}function E(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function S(e,n){if(e){if("string"==typeof e)return h(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?h(e,n):void 0}}function x(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function N(e){return O(e)||E(e)||S(e)||x()}function D(e){if(Array.isArray(e))return e}function I(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,a,i,o,l=[],u=!0,c=!1;try{if(i=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;u=!1}else for(;!(u=(r=i.call(t)).done)&&(l.push(r.value),l.length!==n);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}function j(){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 w(e,n){return D(e)||I(e,n)||S(e,n)||j()}var P=r.ComponentBase.extend({defaultProps:{__TYPE:"Menu",id:null,ariaLabel:null,ariaLabelledBy:null,tabIndex:0,model:null,popup:!1,popupAlignment:"left",style:null,className:null,autoZIndex:!0,baseZIndex:0,appendTo:null,onFocus:null,onBlur:null,transitionOptions:null,onShow:null,onHide:null,children:void 0,closeOnEscape:!0},css:{classes:{root:function(e){var n=e.context;return c.classNames("p-menu p-component",{"p-menu-overlay":e.props.popup,"p-input-filled":n&&"filled"===n.inputStyle||"filled"===d.default.inputStyle,"p-ripple-disabled":n&&!1===n.ripple||!1===d.default.ripple})},menu:"p-menu-list p-reset",content:function(e){return c.classNames("p-menuitem-content",{"p-disabled":e.item.disabled})},action:function(e){return c.classNames("p-menuitem-link",{"p-disabled":e.item.disabled})},menuitem:function(e){return c.classNames("p-menuitem",{"p-focus":e.focused})},submenuHeader:function(e){return c.classNames("p-submenu-header",{"p-disabled":e.submenu.disabled})},separator:"p-menu-separator",label:"p-menuitem-text",icon:"p-menuitem-icon",transition:"p-connected-overlay"},styles:"\n@layer primereact {\n .p-menu-overlay {\n position: absolute;\n /* Github #3122: Prevent animation flickering */\n top: -9999px;\n left: -9999px;\n }\n\n .p-menu ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .p-menu .p-menuitem-link {\n cursor: pointer;\n display: flex;\n align-items: center;\n text-decoration: none;\n overflow: hidden;\n position: relative;\n }\n\n .p-menu .p-menuitem-text {\n line-height: 1;\n }\n}\n",inlineStyles:{submenuHeader:function(e){return e.submenu.style},menuitem:function(e){return e.item.style}}}});function H(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function k(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?H(Object(t),!0).forEach((function(n){v(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):H(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var A=m.memo(m.forwardRef((function(e,n){var s=i.useMergeProps(),p=m.useContext(t.PrimeReactContext),f=P.getProps(e,p),b=w(m.useState(f.id),2),y=b[0],v=b[1],h=w(m.useState(!f.popup),2),O=h[0],E=h[1],S=w(m.useState(-1),2),x=S[0],D=S[1],I=w(m.useState(-1),2),j=I[0],H=I[1],A=w(m.useState(!1),2),T=A[0],_=A[1],M=P.setMetaData({props:f,state:{id:y,visible:O,focused:T}}),C=M.ptm,U=M.cx,R=M.sx,Z=function(e,n){return C(e,{context:n})};r.useHandleStyle(P.css.styles,M.isUnstyled,{name:"menu"});var B=m.useRef(null),F=m.useRef(null),L=m.useRef(null),K=!!(O&&f.popup&&f.closeOnEscape),z=i.useDisplayOrder("menu",K);i.useGlobalOnEscapeKey({callback:function(e){pe(e)},when:K&&z,priority:[i.ESC_KEY_HANDLING_PRIORITIES.MENU,z]});var G=w(i.useOverlayListener({target:L,overlay:B,listener:function(e,n){n.valid&&(p.hideOverlaysOnDocumentScrolling||"outside"===n.type?(pe(e),D(-1)):c.DomHandler.isDocument(e.target)||c.DomHandler.absolutePosition(B.current,L.current,f.popupAlignment))},when:O}),2),J=G[0],X=G[1],Y=function(e,n,t){n.disabled?e.preventDefault():(n.command&&n.command({originalEvent:e,item:n}),f.popup&&pe(e),f.popup||x===t||D(t),n.url||(e.preventDefault(),e.stopPropagation()))},q=function(e,n){e&&f.popup&&x!==n&&D(n)},$=function(e){_(!0),f.popup||(-1!==j?(le(j),H(-1)):le(0)),f.onFocus&&f.onFocus(e)},Q=function(e){var n=e.relatedTarget;n&&e.currentTarget.contains(n)||(_(!1),D(-1),f.onBlur&&f.onBlur(e))},V=function(e){switch(e.code){case"ArrowDown":W(e);break;case"ArrowUp":ee(e);break;case"Home":ne(e);break;case"End":te(e);break;case"Enter":case"NumpadEnter":re(e);break;case"Space":ae(e);break;case"Escape":f.popup&&(c.DomHandler.focus(L.current),pe(e));case"Tab":f.popup&&O&&pe(e)}},W=function(e){var n=ie(x);le(n),e.preventDefault()},ee=function(e){if(e.altKey&&f.popup)c.DomHandler.focus(L.current),pe(e),e.preventDefault();else{var n=oe(x);le(n),e.preventDefault()}},ne=function(e){le(0),e.preventDefault()},te=function(e){le(c.DomHandler.find(B.current,'li[data-pc-section="menuitem"][data-p-disabled="false"]').length-1),e.preventDefault()},re=function(e){var n=c.DomHandler.findSingle(B.current,'li[id="'.concat("".concat(x),'"]')),t=n&&c.DomHandler.findSingle(n,'a[data-pc-section="action"]');f.popup&&c.DomHandler.focus(L.current),t?t.click():n&&n.click(),e.preventDefault()},ae=function(e){re(e)},ie=function(e){var n=N(c.DomHandler.find(B.current,'li[data-pc-section="menuitem"][data-p-disabled="false"]')).findIndex((function(n){return n.id===e}));return n>-1?n+1:0},oe=function(e){var n=N(c.DomHandler.find(B.current,'li[data-pc-section="menuitem"][data-p-disabled="false"]')).findIndex((function(n){return n.id===e}));return n>-1?n-1:0},le=function(e){var n=c.DomHandler.find(B.current,'li[data-pc-section="menuitem"][data-p-disabled="false"]'),t=e>=n.length?n.length-1:e<0?0:e;t>-1&&D(n[t].getAttribute("id"))},ue=function(){return-1!==x?x:null},ce=function(e){f.popup&&(O?pe(e):se(e))},se=function(e){L.current=e.currentTarget,E(!0),f.onShow&&f.onShow(e)},pe=function(e){L.current=e.currentTarget,E(!1),f.onHide&&f.onHide(e)},me=function(){c.DomHandler.addStyles(B.current,{position:"absolute",top:"0",left:"0"}),c.ZIndexUtils.set("menu",B.current,p&&p.autoZIndex||d.default.autoZIndex,f.baseZIndex||p&&p.zIndex.menu||d.default.zIndex.menu),c.DomHandler.absolutePosition(B.current,L.current,f.popupAlignment),f.popup&&(c.DomHandler.focus(F.current),le(0))},de=function(){J()},fe=function(){L.current=null,X()},be=function(){c.ZIndexUtils.clear(B.current)};i.useMountEffect((function(){y||v(c.UniqueComponentId())})),i.useUnmountEffect((function(){c.ZIndexUtils.clear(B.current)})),m.useImperativeHandle(n,(function(){return{props:f,toggle:ce,show:se,hide:pe,getElement:function(){return B.current},getTarget:function(){return L.current}}}));var ye=function(e,n){var t=y+"_sub_"+n,r=e.items.map((function(e,n){return ge(e,n,t)})),a=s({id:t,role:"none",className:c.classNames(e.className,U("submenuHeader",{submenu:e})),style:R("submenuHeader",{submenu:e}),"data-p-disabled":e.disabled},C("submenuHeader"));return m.createElement(m.Fragment,{key:t},m.createElement("li",g({},a,{key:t}),e.label),r)},ve=function(e,n){if(!1===e.visible)return null;var t=y+"_separator_"+n,r=s({id:t,className:c.classNames(e.className,U("separator")),role:"separator"},C("separator"));return m.createElement("li",g({},r,{key:t}))},ge=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!1===e.visible)return null;var r={item:e,index:n,parentId:t},a=c.classNames("p-menuitem-link",{"p-disabled":e.disabled}),i=c.classNames("p-menuitem-icon",e.icon),o=s({className:U("icon")},Z("icon",r)),l=c.IconUtils.getJSXIcon(e.icon,k({},o),{props:f}),p=s({className:U("label")},Z("label",r)),d=e.label&&m.createElement("span",p,e.label),b=e.id||(t||y)+"_"+n,v=s({onClick:function(n){return Y(n,e,b)},onMouseMove:function(e){return q(e,b)},className:U("content",{item:e})},Z("content",r)),h=s({href:e.url||"#",className:U("action",{item:e}),onFocus:function(e){return e.stopPropagation()},target:e.target,tabIndex:"-1","aria-label":e.label,"aria-disabled":e.disabled,"data-p-disabled":e.disabled},Z("action",r)),O=m.createElement("div",v,m.createElement("a",h,l,d,m.createElement(u.Ripple,null)));e.template&&(O=c.ObjectUtils.getJSXElement(e.template,e,{onClick:function(n){return Y(n,e,b)},onMouseMove:function(e){return q(e,b)},className:a,tabIndex:"-1",labelClassName:"p-menuitem-text",iconClassName:i,element:O,props:f}));var E=s({id:b,className:c.classNames(e.className,U("menuitem",{focused:x===b})),onClick:function(n){return Y(n,e,b)},style:R("menuitem",{item:e}),role:"menuitem","aria-label":e.label,"aria-disabled":e.disabled,"data-p-focused":ue()===b,"data-p-disabled":e.disabled||!1},Z("menuitem",r));return m.createElement("li",g({},E,{key:b}),O)},he=function(e,n){return!1===e.visible?null:e.separator?ve(e,n):e.items?ye(e,n):ge(e,n)},Oe=function(){if(f.model){var e=f.model.map(he),n=s({className:c.classNames(f.className,U("root",{context:p})),style:f.style,onClick:function(e){return n=e,void(f.popup&&o.OverlayService.emit("overlay-click",{originalEvent:n,target:L.current}));var n}},P.getOtherProps(f),C("root")),t=s({ref:F,className:U("menu"),id:y+"_list",tabIndex:f.tabIndex||"0",role:"menu","aria-label":f.ariaLabel,"aria-labelledby":f.ariaLabelledBy,"aria-activedescendant":T?ue():void 0,onFocus:$,onKeyDown:V,onBlur:Q},C("menu")),r=s({classNames:U("transition"),in:O,timeout:{enter:120,exit:100},options:f.transitionOptions,unmountOnExit:!0,onEnter:me,onEntered:de,onExit:fe,onExited:be},C("transition"));return m.createElement(a.CSSTransition,g({nodeRef:B},r),m.createElement("div",g({id:f.id,ref:B},n),m.createElement("ul",t,e)))}return null}();return f.popup?m.createElement(l.Portal,{element:Oe,appendTo:f.appendTo}):Oe})));return A.displayName="Menu",e.Menu=A,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.componentbase,primereact.csstransition,primereact.hooks,primereact.overlayservice,primereact.portal,primereact.ripple,primereact.utils);