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) • 19.1 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("primereact/api"),t=require("primereact/componentbase"),r=require("primereact/hooks"),i=require("primereact/icons/bars"),o=require("primereact/utils"),a=require("primereact/icons/angledown"),u=require("primereact/icons/angleright"),c=require("primereact/ripple");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(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=s(e),f=l(n);function p(e){return p="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},p(e)}function d(e,n){if("object"!==p(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!==p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}function b(e){var n=d(e,"string");return"symbol"===p(n)?n:String(n)}function v(e,n,t){return(n=b(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function y(e){if(Array.isArray(e))return e}function g(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,o,a,u=[],c=!0,l=!1;try{if(o=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(u.push(r.value),u.length!==n);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(l)throw i}}return u}}function x(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function I(e,n){if(e){if("string"==typeof e)return x(e,n);var t=Object.prototype.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)?x(e,n):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 E(e,n){return y(e)||g(e,n)||I(e,n)||h()}var O=t.ComponentBase.extend({defaultProps:{__TYPE:"Menubar",id:null,model:null,style:null,className:null,start:null,ariaLabel:null,ariaLabelledBy:null,onFocus:null,onBlur:null,submenuIcon:null,menuIcon:null,end:null,children:void 0},css:{classes:{start:"p-menubar-start",end:"p-menubar-end",button:"p-menubar-button",root:function(e){return o.classNames("p-menubar p-component",{"p-menubar-mobile-active":e.mobileActiveState})},separator:"p-menuitem-separator",icon:"p-menuitem-icon",label:"p-menuitem-text",submenuIcon:"p-submenu-icon",menuitem:function(e){return o.classNames("p-menuitem",{"p-menuitem-active p-highlight":e.active,"p-focus":e.focused,"p-disabled":e.disabled})},menu:"p-menubar-root-list",content:"p-menuitem-content",submenu:"p-submenu-list",action:function(e){return o.classNames("p-menuitem-link",{"p-disabled":e.disabled})}},styles:"\n@layer primereact {\n .p-menubar {\n display: flex;\n align-items: center;\n }\n\n .p-menubar ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .p-menubar .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-menubar .p-menuitem-text {\n line-height: 1;\n }\n\n .p-menubar .p-menuitem {\n position: relative;\n }\n\n .p-menubar-root-list {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .p-menubar-root-list > li ul {\n display: none;\n z-index: 1;\n }\n\n .p-menubar-root-list > .p-menuitem-active > .p-submenu-list {\n display: block;\n }\n\n .p-menubar .p-submenu-list {\n display: none;\n position: absolute;\n z-index: 1;\n }\n\n .p-menubar .p-submenu-list > .p-menuitem-active > .p-submenu-list {\n display: block;\n left: 100%;\n top: 0;\n }\n\n .p-menubar .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link .p-submenu-icon {\n margin-left: auto;\n }\n\n .p-menubar .p-menubar-end {\n margin-left: auto;\n align-self: center;\n }\n\n .p-menubar-button {\n display: none;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n text-decoration: none;\n }\n}\n"}});function k(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 j(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?k(Object(t),!0).forEach((function(n){v(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):k(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var P=m.memo(m.forwardRef((function(e,n){var t=r.useMergeProps(),i=e.ptm,l=e.cx,s=function(n,t,r){return i(t,{props:e,hostName:e.hostName,context:{item:n,index:r,active:x(n),focused:E(n),disabled:h(n),level:e.level}})},f=function(n,t){h(t)||e.mobileActive?n.preventDefault():e.onItemMouseEnter&&e.onItemMouseEnter({originalEvent:n,processedItem:t})},p=function(e,n){var t=n.item;h(n)?e.preventDefault():(t.command&&t.command({originalEvent:e,item:t}),d({originalEvent:e,processedItem:n,isFocus:!0}),t.url||(e.preventDefault(),e.stopPropagation()))},d=function(n){e.onLeafClick&&e.onLeafClick(n)},b=function(e){var n;return null===(n=e.item)||void 0===n?void 0:n.id},y=function(n){return"".concat(e.id,"_").concat(n.key)},g=function(e,n,t){return e&&e.item?o.ObjectUtils.getItemValue(e.item[n],t):void 0},x=function(n){return e.activeItemPath.some((function(e){return e.key===n.key}))},I=function(e){return!1!==g(e,"visible")},h=function(e){return g(e,"disabled")},E=function(n){return e.focusedItemId===y(n)},O=function(e){return o.ObjectUtils.isNotEmpty(e.items)},k=function(n){return n-e.model.slice(0,n).filter((function(e){return I(e)&&g(e,"separator")})).length+1},S=function(n){var r=e.id+"_separator_"+n,o=t({key:r,"data-id":r,className:l("separator"),role:"separator"},i("separator",{hostName:e.hostName}));return m.createElement("li",o)},N=function(n){var t=n&&n.items;return t?m.createElement(P,{id:e.id,hostName:e.hostName,menuProps:e.menuProps,level:e.level+1,model:t,activeItemPath:e.activeItemPath,focusedItemId:e.focusedItemId,onLeafClick:d,onItemMouseEnter:e.onItemMouseEnter,submenuIcon:e.submenuIcon,ptm:i,style:{display:x(n)?"block":"none"},cx:l}):null},w=function(n,r){var i=n.item;if(!I(n))return null;var d=b(n),P=y(n),S=x(n),w=E(n),D=h(n)||!1,U=O(n),K=o.classNames("p-menuitem-link",{"p-disabled":D}),M=o.classNames("p-menuitem-icon",g(n,"icon")),A=t({className:l("icon")},s(n,"icon",r)),C=o.IconUtils.getJSXIcon(i.icon,j({},A),{props:e.menuProps}),L=t({className:l("label")},s(n,"label",r)),R=i.label&&m.createElement("span",L,i.label),H=g(n,"items"),T=t({className:l("submenuIcon")},s(n,"submenuIcon",r)),_=H&&o.IconUtils.getJSXIcon(e.root?e.submenuIcon||m.createElement(a.AngleDownIcon,T):e.submenuIcon||m.createElement(u.AngleRightIcon,T),j({},T),{props:j({menuProps:e.menuProps},e)}),B=N(n),q=t({href:i.url||"#",tabIndex:"-1","aria-hidden":"true",className:l("action",{disabled:D}),onFocus:function(e){return e.stopPropagation()},target:g(n,"target"),"aria-haspopup":null!=H},s(n,"action",r)),F=m.createElement("a",q,C,R,_,m.createElement(c.Ripple,null));i.template&&(F=o.ObjectUtils.getJSXElement(i.template,i,{className:K,labelClassName:"p-menuitem-text",iconClassName:M,submenuIconClassName:"p-submenu-icon",element:F,props:e}));var z=t({onClick:function(e){return p(e,n)},onMouseEnter:function(e){return f(e,n)},className:l("content")},s(n,"content",r)),J=g(n,"className"),X=t(v({id:d,key:P,"data-id":P,role:"menuitem","aria-label":i.label,"aria-disabled":D,"aria-expanded":U?S:void 0,"aria-haspopup":U&&!i.url?"menu":void 0,"aria-level":e.level+1,"aria-setsize":e.model.filter((function(e){return I(e)&&!g(e,"separator")})).length,"aria-posinset":k(r),"data-p-highlight":S,"data-p-focused":w,"data-p-disabled":D,className:o.classNames(J,l("menuitem",{active:S,focused:w,disabled:D}))},"data-p-disabled",D||!1),s(n,"menuitem",r));return m.createElement("li",X,m.createElement("div",z,F),B)},D=e.root?"menubar":"menu",U=e.root?"menu":"submenu",K=e.root?"0":null,M=e.model?e.model.map((function(e,n){return g(e,"separator")?S(n):w(e,n)})):null,A=t({ref:n,className:l(U),level:e.level,onFocus:e.onFocus,onBlur:e.onBlur,onKeyDown:e.onKeyDown,"data-id":e.id,tabIndex:K,"aria-activedescendant":e.ariaActivedescendant,style:e.style,role:D},i(U));return m.createElement("ul",A,M)})));function S(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 N(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?S(Object(t),!0).forEach((function(n){v(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):S(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}P.displayName="MenubarSub";var w=m.memo(m.forwardRef((function(e,a){var u=r.useMergeProps(),c=m.useContext(n.PrimeReactContext),l=O.getProps(e,c),s=E(m.useState(l.id),2),p=s[0],d=s[1],b=E(m.useState(!1),2),y=b[0],g=b[1],x=E(m.useState(!1),2),I=x[0],h=x[1],k=E(m.useState({index:-1,level:0,parentKey:""}),2),j=k[0],S=k[1],w=E(m.useState(null),2),D=w[0],U=w[1],K=E(m.useState([]),2),M=K[0],A=K[1],C=E(m.useState([]),2),L=C[0],R=C[1],H=E(m.useState([]),2),T=H[0],_=H[1],B=E(m.useState(!1),2),q=B[0],F=B[1],z=E(m.useState(!1),2),J=z[0],X=z[1],Z=m.useRef(null),V=m.useRef(null),W=m.useRef(null),Y=m.useRef(""),$=m.useRef(null),G=m.useRef(!1),Q=O.setMetaData({props:l,state:{id:p,mobileActive:y}}),ee=Q.ptm,ne=Q.cx;t.useHandleStyle(O.css.styles,Q.isUnstyled,{name:"menubar"});var te=E(r.useEventListener({type:"click",listener:function(e){me(e)&&(Z.current&&!Z.current.contains(e.target)&&se())}}),2),re=te[0],ie=te[1],oe=E(r.useResizeListener({listener:function(e){o.DomHandler.isTouchDevice()||se(e)}}),2),ae=oe[0],ue=oe[1],ce=function(e){y?(g(!1),se()):(g(!0),setTimeout((function(){le()}),1)),e.preventDefault()},le=function(){S({index:Le(),level:0,parentKey:""}),o.DomHandler.focus(V.current)},se=function(e){y&&(g(!1),setTimeout((function(){o.DomHandler.focus(W.current)}),0)),A([]),S({index:-1,level:0,parentKey:""}),e&&o.DomHandler.focus(V.current),X(!1)},me=function(e){return V.current!==e.target&&!V.current.contains(e.target)&&W.current!==e.target&&!W.current.contains(e.target)},fe=function(e,n){return e?o.ObjectUtils.getItemValue(e[n]):void 0},pe=function(e){return fe(e,"separator")},de=function(e){return e?fe(e.item,"label"):void 0},be=function(e){return e&&o.ObjectUtils.isNotEmpty(e.items)},ve=function(e){var n=e.processedItem,t=e.isFocus;if(!o.ObjectUtils.isEmpty(n)){var r=n.index,i=n.key,a=n.level,u=n.parentKey,c=o.ObjectUtils.isNotEmpty(n.items),l=M.filter((function(e){return e.parentKey!==u&&e.parentKey!==i}));c&&l.push(n),S({index:r,level:a,parentKey:u}),A(l),c&&X(!0),t&&o.DomHandler.focus(V.current)}},ye=function(e){var n=L[j.index];if(n?o.ObjectUtils.isEmpty(n.parent):null){be(n)&&(ve({originalEvent:e,processedItem:n}),S({index:-1,parentKey:n.key}),setTimeout((function(){return F(!0)}),0))}else{var t=-1!==j.index?Me(j.index):Le();Te(t)}e.preventDefault()},ge=function(e){var n=L[j.index];if(o.ObjectUtils.isEmpty(n.parent)){be(n)&&(ve({originalEvent:e,processedItem:n}),S({index:-1,parentKey:n.key}),G.current=!0,setTimeout((function(){return F(!0)}),0))}else{var t=M.find((function(e){return e.key===n.parentKey}));if(0===j.index&&t&&""===t.parentKey)S({index:-1,parentKey:t?t.parentKey:""}),Y.current="",xe(e);else{var r=-1!==j.index?Ae(j.index):Re();Te(r)}}e.preventDefault()},xe=function(e){var n=L[j.index],t=n?M.find((function(e){return e.key===n.parentKey})):null;if(t)ve({originalEvent:e,processedItem:t}),A(M.filter((function(e){return e.key!==t.key})));else{var r=-1!==j.index?Ae(j.index):Re();Te(r)}e.preventDefault()},Ie=function(e){var n=L[j.index];if(n?M.find((function(e){return e.key===n.parentKey})):null){be(n)&&(ve({originalEvent:e,processedItem:n}),S({index:-1,parentKey:n.key}),setTimeout((function(){return F(!0)}),0))}else{var t=-1!==j.index?Me(j.index):Le();Te(t)}e.preventDefault()},he=function(e){Te(Ue()),e.preventDefault()},Ee=function(e){Te(Ke()),e.preventDefault()},Oe=function(e){if(-1!==j.index){var n=o.DomHandler.findSingle(V.current,'li[data-id="'.concat("".concat(D),'"]')),t=n&&o.DomHandler.findSingle(n,'a[data-pc-section="action"]');t?t.click():n&&n.click()}e.preventDefault()},ke=function(e){Oe(e)},je=function(e){se(!0),S({focusedItemInfo:j,index:Le()})},Pe=function(e){if(-1!==j.index){var n=L[j.index];!be(n)&&ve({originalEvent:e,processedItem:n})}se()},Se=function(e){return Ne(e)&&de(e).toLocaleLowerCase().startsWith(Y.current.toLocaleLowerCase())},Ne=function(e){return!!e&&!fe(e.item,"disabled")&&!pe(e.item)},we=function(e){return Ne(e)&&De(e)},De=function(e){return M.some((function(n){return n.key===e.key}))},Ue=function(){return L.findIndex((function(e){return Ne(e)}))},Ke=function(){return o.ObjectUtils.findLastIndex(L,(function(e){return Ne(e)}))},Me=function(e){var n=e<L.length-1?L.slice(e+1).findIndex((function(e){return Ne(e)})):-1;return n>-1?n+e+1:e},Ae=function(e){var n=e>0?o.ObjectUtils.findLastIndex(L.slice(0,e),(function(e){return Ne(e)})):-1;return n>-1?n:e},Ce=function(){return L.findIndex((function(e){return we(e)}))},Le=function(){var e=Ce();return e<0?Ue():e},Re=function(){var e=Ce();return e<0?Ke():e},He=function(e,n){Y.current=(Y.current||"")+n;var t=-1,r=!1;return-1!==(t=-1!==j.index?-1===(t=L.slice(j.index).findIndex((function(e){return Se(e)})))?L.slice(0,j.index).findIndex((function(e){return Se(e)})):t+j.index:L.findIndex((function(e){return Se(e)})))&&(r=!0),-1===t&&-1===j.index&&(t=Le()),-1!==t&&Te(t),$.current&&clearTimeout($.current),$.current=setTimeout((function(){Y.current="",$.current=null}),500),r},Te=function(e){j.index!==e&&(S(N(N({},j),{},{index:e})),_e())},_e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,n=-1!==e?"".concat(p,"_").concat(e):D,t=o.DomHandler.findSingle(V.current,'li[data-id="'.concat(n,'"]'));t&&t.scrollIntoView&&t.scrollIntoView({block:"nearest",inline:"start"})},Be=m.useCallback((function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=[];return e&&e.forEach((function(e,o){var a=(""!==r?r+"_":"")+o,u={item:e,index:o,level:n,key:a,parent:t,parentKey:r};u.items=Be(e.items,n+1,u,a),i.push(u)})),i}),[]);r.useMountEffect((function(){p||d(o.UniqueComponentId())})),r.useUpdateEffect((function(){y?(re(),ae(),o.ZIndexUtils.set("menu",V.current,c&&c.autoZIndex||f.default.autoZIndex,c&&c.zIndex.menu||f.default.zIndex.menu)):(ue(),ie(),o.ZIndexUtils.clear(V.current))}),[y]),m.useEffect((function(){var e=Be(l.model||[],0,null,"");_(e)}),[l.model,Be]),r.useUpdateEffect((function(){var e=M.find((function(e){return e.key===j.parentKey}));R(e?e.items:T)}),[M,j,T]),r.useUpdateEffect((function(){o.ObjectUtils.isNotEmpty(M)?(re(),ae()):(ie(),ue())}),[M]),r.useUpdateEffect((function(){if(q){var e=-1!==j.index?Me(j.index):G.current?Ke():Le();Te(e),G.current=!1,F(!1)}}),[q]),r.useUpdateEffect((function(){U(-1!==j.index?"".concat(p).concat(o.ObjectUtils.isNotEmpty(j.parentKey)?"_"+j.parentKey:"","_").concat(j.index):null)}),[j]),r.useUnmountEffect((function(){o.ZIndexUtils.clear(V.current)})),m.useImperativeHandle(a,(function(){return{props:l,toggle:ce,getElement:function(){return Z.current},getRootMenu:function(){return V.current},getMenuButton:function(){return W.current}}}));var qe=function(){if(l.start){var e=o.ObjectUtils.getJSXElement(l.start,l),n=u({className:ne("start")},ee("start"));return m.createElement("div",n,e)}return null}(),Fe=function(){if(l.end){var e=o.ObjectUtils.getJSXElement(l.end,l),n=u({className:ne("end")},ee("end"));return m.createElement("div",n,e)}return null}(),ze=function(){if(l.model&&l.model.length<1)return null;var e=u(v(v(v(v({ref:W,href:"#",tabIndex:"0","aria-haspopup":!!(y&&l.model&&l.model.length>0),"aria-expanded":y,"aria-label":n.ariaLabel("navigation"),"aria-controls":p,role:"button"},"tabIndex",0),"className",ne("button")),"onKeyDown",(function(e){var n;("Enter"===(n=e).code||"NumpadEnter"===n.code||"Space"===n.code)&&ce(n)})),"onClick",(function(e){return ce(e)})),ee("button")),t=u(ee("popupIcon")),r=o.IconUtils.getJSXIcon(l.menuIcon||m.createElement(i.BarsIcon,t),N({},t),{props:l});return m.createElement("a",e,r)}(),Je=m.createElement(P,{hostName:"Menubar",ariaActivedescendant:I?D:void 0,level:0,id:p,ref:V,menuProps:l,model:T,onLeafClick:function(e){var n=e.originalEvent,t=e.processedItem,r=be(t),i=o.ObjectUtils.isEmpty(t.parent);if(De(t)){var a=t.index,u=t.key,c=t.level,l=t.parentKey;A(M.filter((function(e){return u!==e.key&&u.startsWith(e.key)}))),S({index:a,level:c,parentKey:l}),r||X(!i),setTimeout((function(){o.DomHandler.focus(V.current),r&&X(!0)}),0)}else if(r)o.DomHandler.focus(V.current),ve({originalEvent:n,processedItem:t});else{var s=i?t:M.find((function(e){return""===e.parentKey})),m=s?s.index:-1;se(n),S({index:m,parentKey:s?s.parentKey:""}),g(!1)}},onItemMouseEnter:function(e){!y&&J&&ve(e)},onFocus:function(e){h(!0),S(-1!==j.index?j:{index:Le(),level:0,parentKey:""}),l.onFocus&&l.onFocus(e)},onBlur:function(e){h(!1),S({index:-1,level:0,parentKey:""}),Y.current="",X(!1),l.onBlur&&l.onBlur(e)},onKeyDown:function(e){var n=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":ye(e);break;case"ArrowUp":ge(e);break;case"ArrowLeft":xe(e);break;case"ArrowRight":Ie(e);break;case"Home":he(e);break;case"End":Ee(e);break;case"Space":ke(e);break;case"Enter":case"NumpadEnter":Oe(e);break;case"Escape":je();break;case"Tab":Pe(e);break;case"PageDown":case"PageUp":case"Backspace":case"ShiftLeft":case"ShiftRight":break;default:!n&&o.ObjectUtils.isPrintableCharacter(e.key)&&He(e,e.key)}},root:!0,activeItemPath:M,focusedItemId:I?D:void 0,submenuIcon:l.submenuIcon,ptm:ee,cx:ne}),Xe=u({id:l.id,ref:Z,className:o.classNames(l.className,ne("root",{mobileActiveState:y})),style:l.style},O.getOtherProps(l),ee("root"));return m.createElement("div",Xe,qe,ze,Je,Fe)})));w.displayName="Menubar",exports.Menubar=w;
;