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) 7.64 kB
import*as e from"react";import t from"primereact/api";import{CSSTransition as n}from"primereact/csstransition";import{useOverlayListener as r,useUpdateEffect as o,useUnmountEffect as i}from"primereact/hooks";import{OverlayService as a}from"primereact/overlayservice";import{Portal as l}from"primereact/portal";import{ObjectUtils as u,classNames as c,IconUtils as s,ZIndexUtils as m,DomHandler as p}from"primereact/utils";function f(){return f=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},f.apply(this,arguments)}function d(e){if(Array.isArray(e))return e}function v(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){c=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}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 y(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 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 d(e)||v(e,t)||y(e,t)||g()}var w={defaultProps:{__TYPE:"SlideMenu",appendTo:null,autoZIndex:!0,backLabel:"Back",baseZIndex:0,className:null,easing:"ease-out",effectDuration:250,id:null,menuWidth:190,model:null,onHide:null,onShow:null,onNavigate:null,popup:!1,style:null,transitionOptions:null,viewportHeight:175,children:void 0},getProps:function(e){return u.getMergedProps(e,w.defaultProps)},getOtherProps:function(e){return u.getDiffProps(e,w.defaultProps)}};function O(e){return O="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},O(e)}function E(e,t){if("object"!==O(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==O(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function S(e){var t=E(e,"string");return"symbol"===O(t)?t:String(t)}function P(e,t,n){return(t=S(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function j(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?N(Object(n),!0).forEach((function(t){P(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var x=e.memo((function(t){var n=h(e.useState(null),2),r=n[0],o=n[1],i=h(e.useState({}),2),a=i[0],l=i[1],m=function(e,n,r){if(n.disabled)e.preventDefault();else if(n.url||e.preventDefault(),n.command&&n.command({originalEvent:e,item:n}),n.items){var i=d(n,r);l(j(j({},a),{},P({},i,!0))),o(n),t.onForward()}},p=function(t){return e.createElement("li",{key:"separator_"+t,className:"p-menu-separator"})},f=function(n,o){var i=a[d(n,o)];return n.items&&i?e.createElement(x,{menuProps:t.menuProps,model:n.items,index:t.index+1,menuWidth:t.menuWidth,effectDuration:t.effectDuration,onForward:t.onForward,parentActive:n===r}):null},d=function(e,t){return e.label+"_"+t},v=function(n,o){if(!1===n.visible)return null;var i=d(n,o),a=r===n,l=c("p-menuitem",{"p-menuitem-active":a,"p-disabled":n.disabled},n.className),p=c("p-menuitem-icon",n.icon),v="p-submenu-icon pi pi-fw pi-angle-right",b=s.getJSXIcon(n.icon,{className:"p-menuitem-icon"},{props:t.menuProps}),y=n.label&&e.createElement("span",{className:"p-menuitem-text"},n.label),g=n.items&&e.createElement("span",{className:v}),h=f(n,o),w=e.createElement("a",{href:n.url||"#",className:"p-menuitem-link",target:n.target,onClick:function(e){return m(e,n,o)},"aria-disabled":n.disabled},b,y,g);n.template&&(w=u.getJSXElement(n.template,n,{onClick:function(e){return m(e,n,o)},className:"p-menuitem-link",labelClassName:"p-menuitem-text",iconClassName:p,submenuIconClassName:v,element:w,props:t,active:a}));return e.createElement("li",{key:i,id:n.id,className:l,style:n.style},w,h)},b=function(e,t){return e.separator?p(t):v(e,t)},y={width:t.menuWidth+"px",left:t.root?-1*t.level*t.menuWidth+"px":t.menuWidth+"px",transitionProperty:t.root?"left":"none",transitionDuration:t.effectDuration+"ms",transitionTimingFunction:t.easing},g=c({"p-slidemenu-rootlist":t.root,"p-submenu-list":!t.root,"p-active-submenu":t.parentActive}),w=t.model?t.model.map(b):null;return e.createElement("ul",{className:g,style:y},w)}));x.displayName="SlideMenuSub";var k=e.memo(e.forwardRef((function(u,s){var d=w.getProps(u),v=h(e.useState(0),2),b=v[0],y=v[1],g=h(e.useState(!1),2),O=g[0],E=g[1],S=e.useRef(null),P=e.useRef(null),N=e.useRef(null),j=e.useRef(null),k=h(r({target:P,overlay:S,listener:function(e,t){t.valid&&H(e)},when:O}),2),D=k[0],I=k[1],A=function(e){d.popup&&a.emit("overlay-click",{originalEvent:e,target:P.current})},T=function(){y((function(e){return e+1}))},C=function(){y((function(e){return e-1}))},W=function(e){d.popup&&(O?H(e):F(e))},F=function(e){P.current=e.currentTarget,E(!0),d.onShow&&d.onShow(e)},H=function(e){P.current=e.currentTarget,E(!1),d.onHide&&d.onHide(e)},R=function(){d.autoZIndex&&m.set("menu",S.current,t.autoZIndex,d.baseZIndex||t.zIndex.menu),p.absolutePosition(S.current,P.current)},M=function(){D()},Z=function(){P.current=null,I()},_=function(){m.clear(S.current),y(0)};o((function(){y(0)}),[d.model]),o((function(){d.onNavigate&&d.onNavigate({level:b})}),[b]),i((function(){m.clear(S.current)})),e.useImperativeHandle(s,(function(){return{props:d,toggle:W,show:F,hide:H,navigateForward:T,navigateBack:C,setLevelState:y,getElement:function(){return S.current}}}));var L=function(){var t=c("p-slidemenu-backward",{"p-hidden":0===b});return e.createElement("div",{ref:N,className:t,onClick:C},e.createElement("span",{className:"p-slidemenu-backward-icon pi pi-fw pi-chevron-left"}),e.createElement("span",null,d.backLabel))},B=function(){var t=w.getOtherProps(d),r=c("p-slidemenu p-component",{"p-slidemenu-overlay":d.popup},d.className),o={height:d.viewportHeight+"px"},i=L();return e.createElement(n,{nodeRef:S,classNames:"p-connected-overlay",in:!d.popup||O,timeout:{enter:120,exit:100},options:d.transitionOptions,unmountOnExit:!0,onEnter:R,onEntered:M,onExit:Z,onExited:_},e.createElement("div",f({ref:S,id:d.id,className:r,style:d.style},t,{onClick:A}),e.createElement("div",{className:"p-slidemenu-wrapper",style:o},e.createElement("div",{className:"p-slidemenu-content",ref:j},e.createElement(x,{menuProps:d,model:d.model,root:!0,index:0,menuWidth:d.menuWidth,effectDuration:d.effectDuration,level:b,parentActive:0===b,onForward:T})),i)))}();return d.popup?e.createElement(l,{element:B,appendTo:d.appendTo}):B})));k.displayName="SlideMenu";export{k as SlideMenu};