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
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("primereact/api"),t=require("primereact/hooks"),a=require("primereact/ripple"),r=require("primereact/utils");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(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 u=i(e),o=l(n);function c(){return c=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},c.apply(this,arguments)}function m(e){if(Array.isArray(e))return e}function s(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,r,l,i,u=[],o=!0,c=!1;try{if(l=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;o=!1}else for(;!(o=(a=l.call(t)).done)&&(u.push(a.value),u.length!==n);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(c)throw r}}return u}}function p(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 p(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)?p(e,n):void 0}}function f(){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 g(e,n){return m(e)||s(e,n)||d(e,n)||f()}var b={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 r.ObjectUtils.getMergedProps(e,b.defaultProps)},getOtherProps:function(e){return r.ObjectUtils.getDiffProps(e,b.defaultProps)}},v=u.memo(u.forwardRef((function(e,n){var l=b.getProps(e),i=g(u.useState(null),2),m=i[0],s=i[1],p=g(u.useState(null),2),d=p[0],f=p[1],v=g(u.useState(!1),2),h=v[0],y=v[1],E=u.useRef(null),N=u.useRef(null),k=u.useRef(null),w="horizontal"===l.orientation,x="vertical"===l.orientation,O=t.useMatchMedia("screen and (max-width: ".concat(l.breakpoint,")"),!!l.breakpoint),j=g(t.useEventListener({type:"click",listener:function(e){O&&!h||!A(e)||(s(null),y(!1))}}),1)[0],S=g(t.useResizeListener({listener:function(){O&&!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:x?_(t):n.items&&n===m&&P(),e.preventDefault();break;case 39:w?z(t):M(n),e.preventDefault();break;case 37:w?_(t):n.items&&n===m&&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?r.DomHandler.hasClass(t,"p-disabled")||!r.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},H=function e(n){var t=n.previousElementSibling;return t?r.DomHandler.hasClass(t,"p-disabled")||!r.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()},A=function(e){return E.current&&!(E.current.isSameNode(e.target)||E.current.contains(e.target)||k.current&&k.current.contains(e.target))},R=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};u.useImperativeHandle(n,(function(){return{props:l,getElement:function(){return E.current}}})),t.useMountEffect((function(){l.breakpoint&&!d&&f(r.UniqueComponentId()),j(),S()})),t.useUpdateEffect((function(){var e=r.DomHandler.findSingle(E.current,".p-menuitem-active > .p-megamenu-panel");return m&&!O&&r.ZIndexUtils.set("menu",e,o.default.autoZIndex,o.default.zIndex.menu),O&&e&&e.previousElementSibling.scrollIntoView({block:"nearest",inline:"nearest"}),function(){r.ZIndexUtils.clear(e)}}),[m]);var q=function(e){return u.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},J=function(e){if(e.items){var n=r.classNames("p-submenu-icon pi",{"pi-angle-down":w,"pi-angle-right":x});return u.createElement("span",{className:n})}return null},X=function(e,n){if(!1===e.visible)return null;if(e.separator)return q(n);var t=e.label+"_"+n,i=r.classNames("p-menuitem",e.className),o=r.classNames("p-menuitem-link",{"p-disabled":e.disabled}),c=r.classNames(e.icon,"p-menuitem-icon"),m=r.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:l}),s=u.createElement("a",{href:e.url||"#",className:o,target:e.target,onClick:function(n){return D(n,e)},role:"menuitem","aria-disabled":e.disabled},m,e.label&&u.createElement("span",{className:"p-menuitem-text"},e.label),u.createElement(a.Ripple,null));return e.template&&(s=r.ObjectUtils.getJSXElement(e.template,e,{onClick:function(n){return D(n,e)},className:o,labelClassName:"p-menuitem-text",iconClassName:c,element:s,props:l})),u.createElement("li",{key:t,id:e.id,className:i,style:e.style,role:"none"},s)},T=function(e){if(!1===e.visible)return null;var n=r.classNames("p-megamenu-submenu-header",{"p-disabled":e.disabled},e.className),t=e.items.map(X);return u.createElement(u.Fragment,{key:e.label},u.createElement("li",{id:e.id,className:n,style:e.style,role:"presentation"},e.label),t)},L=function(e){return e.map(T)},Z=function(e,n,t,a){var r=e.label+"_column_"+t,l=L(n);return u.createElement("div",{key:r,className:a},u.createElement("ul",{className:"p-megamenu-submenu",role:"menu"},l))},F=function(e){if(e.items){var n=R(e);return e.items.map((function(t,a){return Z(e,t,a,n)}))}return null},K=function(e){if(e.items){var n=F(e);return u.createElement("div",{className:"p-megamenu-panel"},u.createElement("div",{className:"p-megamenu-grid"},n))}return null},V=function(){if(!N.current){N.current=r.DomHandler.createInlineStyle(o.default.nonce);var e="".concat(d),n="\n@media screen and (max-width: ".concat(l.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(x?"\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(l.scrollHeight,";\n overflow: ").concat(l.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}};t.useUpdateEffect((function(){return d&&E.current&&(E.current.setAttribute(d,""),V()),function(){N.current=r.DomHandler.removeInlineStyle(N.current)}}),[d,l.breakpoint]);var Y=function(e,n){var t=r.classNames("p-menuitem",{"p-menuitem-active":e===m},e.className),i=r.classNames("p-menuitem-link",{"p-disabled":e.disabled}),o=r.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:l}),c=e.label&&u.createElement("span",{className:"p-menuitem-text"},e.label),p=e.template?r.ObjectUtils.getJSXElement(e.template,e):null,d=J(e),f=K(e);return u.createElement("li",{key:e.label+"_"+n,id:e.id,className:t,style:e.style,onMouseEnter:function(n){return t=n,void((a=e).disabled||O?t.preventDefault():m&&s(a));var t,a},role:"none"},u.createElement("a",{href:e.url||"#",className:i,target:e.target,onClick:function(n){return t=n,(a=e).disabled||(a.url||t.preventDefault(),a.command&&a.command({originalEvent:t,item:l.item}),a.items&&s(m&&m===a?null:a)),void t.preventDefault();var t,a},onKeyDown:function(n){return I(n,e)},role:"menuitem","aria-haspopup":null!=e.items},o,c,p,d,u.createElement(a.Ripple,null)),f)},$=b.getOtherProps(l),B=r.classNames("p-megamenu p-component",{"p-megamenu-horizontal":"horizontal"===l.orientation,"p-megamenu-vertical":"vertical"===l.orientation,"p-megamenu-mobile-active":h},l.className),G=l.model?u.createElement("ul",{className:"p-megamenu-root-list",role:"menubar"},l.model.map((function(e,n){return Y(e,n)}))):null,Q=function(){if(l.start){var e=r.ObjectUtils.getJSXElement(l.start,l);return u.createElement("div",{className:"p-megamenu-start"},e)}return null}(),W=function(){if(l.end){var e=r.ObjectUtils.getJSXElement(l.end,l);return u.createElement("div",{className:"p-megamenu-end"},e)}return null}(),ee="vertical"===l.orientation||l.model&&l.model.length<1?null:u.createElement("a",{ref:k,href:"#",role:"button",tabIndex:0,className:"p-megamenu-button",onClick:U},u.createElement("i",{className:"pi pi-bars"}));return u.createElement("div",c({ref:E,id:l.id,className:B,style:l.style},$),Q,ee,G,W)})));v.displayName="MegaMenu",exports.MegaMenu=v;
;