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) • 10.5 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.megamenu=function(e,n,t,a,r,l){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var c=u(n),o=i(t);function m(){return m=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},m.apply(this,arguments)}function s(e){if(Array.isArray(e))return e}function p(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,r,l,i,u=[],c=!0,o=!1;try{if(l=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(a=l.call(t)).done)&&(u.push(a.value),u.length!==n);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(o)throw r}}return u}}function f(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=new Array(n);t<n;t++)a[t]=e[t];return a}function d(e,n){if(e){if("string"==typeof e)return f(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)?f(e,n):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 b(e,n){return s(e)||p(e,n)||d(e,n)||g()}var v={defaultProps:{__TYPE:"MegaMenu",id:null,model:null,style:null,className:null,orientation:"horizontal",breakpoint:void 0,scrollHeight:"400px",start:null,end:null,children:void 0},getProps:function(e){return l.ObjectUtils.getMergedProps(e,v.defaultProps)},getOtherProps:function(e){return l.ObjectUtils.getDiffProps(e,v.defaultProps)}},h=c.memo(c.forwardRef((function(e,n){var t=v.getProps(e),i=b(c.useState(null),2),u=i[0],s=i[1],p=b(c.useState(null),2),f=p[0],d=p[1],g=b(c.useState(!1),2),h=g[0],y=g[1],E=c.useRef(null),N=c.useRef(null),k=c.useRef(null),w="horizontal"===t.orientation,O="vertical"===t.orientation,j=a.useMatchMedia("screen and (max-width: ".concat(t.breakpoint,")"),!!t.breakpoint),x=b(a.useEventListener({type:"click",listener:function(e){j&&!h||!R(e)||(s(null),y(!1))}}),1)[0],S=b(a.useResizeListener({listener:function(){j&&!h||(s(null),y(!1))}}),1)[0],D=function(e,n){n.disabled?e.preventDefault():(n.url||e.preventDefault(),n.command&&n.command({originalEvent:e,item:n}),s(null),y(!1))},I=function(e,n){var t=e.currentTarget.parentElement;switch(e.which){case 40:w?M(n):z(t),e.preventDefault();break;case 38:O?_(t):n.items&&n===u&&P(),e.preventDefault();break;case 39:w?z(t):M(n),e.preventDefault();break;case 37:w?_(t):n.items&&n===u&&P(),e.preventDefault()}},M=function(e){e.items&&s(e)},P=function(e){s(null)},U=function(e){e.preventDefault(),y((function(e){return!e})),s(null)},C=function e(n){var t=n.nextElementSibling;return t?l.DomHandler.hasClass(t,"p-disabled")||!l.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},H=function e(n){var t=n.previousElementSibling;return t?l.DomHandler.hasClass(t,"p-disabled")||!l.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},z=function(e){var n=C(e);n&&n.children[0].focus()},_=function(e){var n=H(e);n&&n.children[0].focus()},R=function(e){return E.current&&!(E.current.isSameNode(e.target)||E.current.contains(e.target)||k.current&&k.current.contains(e.target))},A=function(e){var n;switch(e.items?e.items.length:0){case 2:n="p-megamenu-col-6";break;case 3:n="p-megamenu-col-4";break;case 4:n="p-megamenu-col-3";break;case 6:n="p-megamenu-col-2";break;default:n="p-megamenu-col-12"}return n};c.useImperativeHandle(n,(function(){return{props:t,getElement:function(){return E.current}}})),a.useMountEffect((function(){t.breakpoint&&!f&&d(l.UniqueComponentId()),x(),S()})),a.useUpdateEffect((function(){var e=l.DomHandler.findSingle(E.current,".p-menuitem-active > .p-megamenu-panel");return u&&!j&&l.ZIndexUtils.set("menu",e,o.default.autoZIndex,o.default.zIndex.menu),j&&e&&e.previousElementSibling.scrollIntoView({block:"nearest",inline:"nearest"}),function(){l.ZIndexUtils.clear(e)}}),[u]);var J=function(e){return c.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},X=function(e){if(e.items){var n=l.classNames("p-submenu-icon pi",{"pi-angle-down":w,"pi-angle-right":O});return c.createElement("span",{className:n})}return null},T=function(e,n){if(!1===e.visible)return null;if(e.separator)return J(n);var a=e.label+"_"+n,i=l.classNames("p-menuitem",e.className),u=l.classNames("p-menuitem-link",{"p-disabled":e.disabled}),o=l.classNames(e.icon,"p-menuitem-icon"),m=l.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:t}),s=c.createElement("a",{href:e.url||"#",className:u,target:e.target,onClick:function(n){return D(n,e)},role:"menuitem","aria-disabled":e.disabled},m,e.label&&c.createElement("span",{className:"p-menuitem-text"},e.label),c.createElement(r.Ripple,null));return e.template&&(s=l.ObjectUtils.getJSXElement(e.template,e,{onClick:function(n){return D(n,e)},className:u,labelClassName:"p-menuitem-text",iconClassName:o,element:s,props:t})),c.createElement("li",{key:a,id:e.id,className:i,style:e.style,role:"none"},s)},L=function(e){if(!1===e.visible)return null;var n=l.classNames("p-megamenu-submenu-header",{"p-disabled":e.disabled},e.className),t=e.items.map(T);return c.createElement(c.Fragment,{key:e.label},c.createElement("li",{id:e.id,className:n,style:e.style,role:"presentation"},e.label),t)},Z=function(e){return e.map(L)},q=function(e,n,t,a){var r=e.label+"_column_"+t,l=Z(n);return c.createElement("div",{key:r,className:a},c.createElement("ul",{className:"p-megamenu-submenu",role:"menu"},l))},F=function(e){if(e.items){var n=A(e);return e.items.map((function(t,a){return q(e,t,a,n)}))}return null},K=function(e){if(e.items){var n=F(e);return c.createElement("div",{className:"p-megamenu-panel"},c.createElement("div",{className:"p-megamenu-grid"},n))}return null},V=function(){if(!N.current){N.current=l.DomHandler.createInlineStyle(o.default.nonce);var e="".concat(f),n="\n@media screen and (max-width: ".concat(t.breakpoint,") {\n .p-megamenu[").concat(e,"] > .p-megamenu-root-list .p-menuitem-active .p-megamenu-panel {\n position: relative;\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n background: inherit;\n }\n\n .p-megamenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-megamenu[").concat(e,"] .p-megamenu-grid {\n flex-wrap: wrap;\n }\n\n ").concat(w?"\n.p-megamenu[".concat(e,"] .p-megamenu-button {\n display: flex;\n}\n\n.p-megamenu[").concat(e,"].p-megamenu-horizontal {\n position: relative;\n}\n\n.p-megamenu[").concat(e,"].p-megamenu-horizontal .p-megamenu-root-list {\n display: none;\n}\n\n.p-megamenu-horizontal[").concat(e,'] div[class*="p-megamenu-col-"] {\n width: auto;\n flex: 1;\n padding: 0;\n}\n\n.p-megamenu[').concat(e,"].p-megamenu-mobile-active .p-megamenu-root-list {\n display: flex;\n flex-direction: column;\n position: absolute;\n width: 100%;\n top: 100%;\n left: 0;\n z-index: 1;\n}\n "):"","\n\n ").concat(O?"\n.p-megamenu-vertical[".concat(e,"] {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(e,"] .p-megamenu-root-list {\n max-height: ").concat(t.scrollHeight,";\n overflow: ").concat(t.scrollHeight?"auto":"",";\n}\n.p-megamenu-vertical[").concat(e,'] div[class*="p-megamenu-col-"] {\n width: 100%;\n padding: 0;\n}\n\n.p-megamenu-vertical[').concat(e,"] .p-megamenu-submenu {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(e,'] div[class*="p-megamenu-col-"] .p-megamenu-submenu-header {\n background: inherit;\n}\n\n.p-megamenu-vertical[').concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n}\n '):"","\n}\n");N.current.innerHTML=n}};a.useUpdateEffect((function(){return f&&E.current&&(E.current.setAttribute(f,""),V()),function(){N.current=l.DomHandler.removeInlineStyle(N.current)}}),[f,t.breakpoint]);var Y=function(e,n){var a=l.classNames("p-menuitem",{"p-menuitem-active":e===u},e.className),i=l.classNames("p-menuitem-link",{"p-disabled":e.disabled}),o=l.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:t}),m=e.label&&c.createElement("span",{className:"p-menuitem-text"},e.label),p=e.template?l.ObjectUtils.getJSXElement(e.template,e):null,f=X(e),d=K(e);return c.createElement("li",{key:e.label+"_"+n,id:e.id,className:a,style:e.style,onMouseEnter:function(n){return t=n,void((a=e).disabled||j?t.preventDefault():u&&s(a));var t,a},role:"none"},c.createElement("a",{href:e.url||"#",className:i,target:e.target,onClick:function(n){return a=n,(r=e).disabled||(r.url||a.preventDefault(),r.command&&r.command({originalEvent:a,item:t.item}),r.items&&s(u&&u===r?null:r)),void a.preventDefault();var a,r},onKeyDown:function(n){return I(n,e)},role:"menuitem","aria-haspopup":null!=e.items},o,m,p,f,c.createElement(r.Ripple,null)),d)},$=v.getOtherProps(t),B=l.classNames("p-megamenu p-component",{"p-megamenu-horizontal":"horizontal"===t.orientation,"p-megamenu-vertical":"vertical"===t.orientation,"p-megamenu-mobile-active":h},t.className),G=t.model?c.createElement("ul",{className:"p-megamenu-root-list",role:"menubar"},t.model.map((function(e,n){return Y(e,n)}))):null,Q=function(){if(t.start){var e=l.ObjectUtils.getJSXElement(t.start,t);return c.createElement("div",{className:"p-megamenu-start"},e)}return null}(),W=function(){if(t.end){var e=l.ObjectUtils.getJSXElement(t.end,t);return c.createElement("div",{className:"p-megamenu-end"},e)}return null}(),ee="vertical"===t.orientation||t.model&&t.model.length<1?null:c.createElement("a",{ref:k,href:"#",role:"button",tabIndex:0,className:"p-megamenu-button",onClick:U},c.createElement("i",{className:"pi pi-bars"}));return c.createElement("div",m({ref:E,id:t.id,className:B,style:t.style},$),Q,ee,G,W)})));return h.displayName="MegaMenu",e.MegaMenu=h,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.hooks,primereact.ripple,primereact.utils);