UNPKG

primevue

Version:

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![npm version](https://badge.fury.io/js/primevue.svg)](https://badge.fury.io/js/primevue) [![Discord Chat](https://img.shields.io/discord/55794023

2 lines (1 loc) 9.65 kB
import{DomHandler as e}from"primevue/utils";import t from"primevue/ripple";import{resolveComponent as n,resolveDirective as i,openBlock as a,createBlock as l,renderSlot as s,createCommentVNode as o,createVNode as m,Fragment as r,renderList as c,withCtx as u,withDirectives as p,toDisplayString as d,resolveDynamicComponent as g}from"vue";var h={name:"MegaMenu",props:{model:{type:Array,default:null},orientation:{type:String,default:"horizontal"},exact:{type:Boolean,default:!0}},documentClickListener:null,data:()=>({activeItem:null}),beforeUnmount(){this.unbindDocumentClickListener()},methods:{onLeafClick(e,t,n){this.disabled(t)?e.preventDefault():(t.command&&t.command({originalEvent:e,item:t}),this.activeItem=null,t.to&&n&&n(e))},onCategoryMouseEnter(e,t){this.disabled(t)?e.preventDefault():this.activeItem&&(this.activeItem=t)},onCategoryClick(e,t,n){this.disabled(t)?e.preventDefault():(t.command&&t.command({originalEvent:e,item:t}),t.items&&(this.activeItem&&this.activeItem===t?(this.activeItem=null,this.unbindDocumentClickListener()):(this.activeItem=t,this.bindDocumentClickListener())),t.to&&n&&n(e))},onCategoryKeydown(e,t){let n=e.currentTarget.parentElement;switch(e.which){case 40:this.horizontal?this.expandMenu(t):this.navigateToNextItem(n),e.preventDefault();break;case 38:this.vertical?this.navigateToPrevItem(n):t.items&&t===this.activeItem&&this.collapseMenu(),e.preventDefault();break;case 39:this.horizontal?this.navigateToNextItem(n):this.expandMenu(t),e.preventDefault();break;case 37:this.horizontal?this.navigateToPrevItem(n):t.items&&t===this.activeItem&&this.collapseMenu(),e.preventDefault()}},expandMenu(e){e.items&&(this.activeItem=e)},collapseMenu(){this.activeItem=null},findNextItem(t){let n=t.nextElementSibling;return n?e.hasClass(n,"p-disabled")||!e.hasClass(n,"p-menuitem")?this.findNextItem(n):n:null},findPrevItem(t){let n=t.previousElementSibling;return n?e.hasClass(n,"p-disabled")||!e.hasClass(n,"p-menuitem")?this.findPrevItem(n):n:null},navigateToNextItem(e){var t=this.findNextItem(e);t&&t.children[0].focus()},navigateToPrevItem(e){var t=this.findPrevItem(e);t&&t.children[0].focus()},getCategoryClass(e){return["p-menuitem",{"p-menuitem-active":e===this.activeItem},e.class]},getCategorySubMenuIcon(){return["p-submenu-icon pi",{"pi-angle-down":this.horizontal,"pi-angle-right":this.vertical}]},getCategoryIcon:e=>["p-menuitem-icon",e.icon],getColumnClassName(e){let t;switch(e.items?e.items.length:0){case 2:t="p-megamenu-col-6";break;case 3:t="p-megamenu-col-4";break;case 4:t="p-megamenu-col-3";break;case 6:t="p-megamenu-col-2";break;default:t="p-megamenu-col-12"}return t},getSubmenuHeaderClass(e){return["p-megamenu-submenu-header",e.class,{"p-disabled":this.disabled(e)}]},getSubmenuItemClass:e=>["p-menuitem",e.class],linkClass(e,t){return["p-menuitem-link",{"p-disabled":this.disabled(e),"router-link-active":t&&t.isActive,"router-link-active-exact":this.exact&&t&&t.isExactActive}]},bindDocumentClickListener(){this.documentClickListener||(this.documentClickListener=e=>{this.$el&&!this.$el.contains(e.target)&&(this.activeItem=null,this.unbindDocumentClickListener())},document.addEventListener("click",this.documentClickListener))},unbindDocumentClickListener(){this.documentClickListener&&(document.removeEventListener("click",this.documentClickListener),this.documentClickListener=null)},visible:e=>"function"==typeof e.visible?e.visible():!1!==e.visible,disabled:e=>"function"==typeof e.disabled?e.disabled():e.disabled},computed:{containerClass(){return["p-megamenu p-component",{"p-megamenu-horizontal":this.horizontal,"p-megamenu-vertical":this.vertical}]},horizontal(){return"horizontal"===this.orientation},vertical(){return"vertical"===this.orientation}},directives:{ripple:t}};const v={key:0,class:"p-megamenu-start"},b={class:"p-megamenu-root-list",role:"menubar"},k={class:"p-menuitem-text"},y={class:"p-menuitem-text"},f={key:2,class:"p-megamenu-panel"},C={class:"p-megamenu-grid"},x={class:"p-menuitem-text"},I={class:"p-menuitem-text"},w={key:1,class:"p-megamenu-end"};!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}("\n.p-megamenu-root-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.p-megamenu-root-list > .p-menuitem {\n position: relative;\n}\n.p-megamenu .p-menuitem-link {\n cursor: pointer;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n text-decoration: none;\n overflow: hidden;\n position: relative;\n}\n.p-megamenu .p-menuitem-text {\n line-height: 1;\n}\n.p-megamenu-panel {\n display: none;\n position: absolute;\n width: auto;\n z-index: 1;\n}\n.p-megamenu-root-list > .p-menuitem-active > .p-megamenu-panel {\n display: block;\n}\n.p-megamenu-submenu {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n/* Horizontal */\n.p-megamenu-horizontal .p-megamenu-root-list {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n\n/* Vertical */\n.p-megamenu-vertical .p-megamenu-root-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.p-megamenu-vertical .p-megamenu-root-list > .p-menuitem-active > .p-megamenu-panel {\n left: 100%;\n top: 0;\n}\n.p-megamenu-vertical .p-megamenu-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {\n margin-left: auto;\n}\n.p-megamenu-grid {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n.p-megamenu-col-2,\n.p-megamenu-col-3,\n.p-megamenu-col-4,\n.p-megamenu-col-6,\n.p-megamenu-col-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n padding: 0.5rem;\n}\n.p-megamenu-col-2 {\n width: 16.6667%;\n}\n.p-megamenu-col-3 {\n width: 25%;\n}\n.p-megamenu-col-4 {\n width: 33.3333%;\n}\n.p-megamenu-col-6 {\n width: 50%;\n}\n.p-megamenu-col-12 {\n width: 100%;\n}\n"),h.render=function(e,t,h,L,E,M){const S=n("router-link"),D=i("ripple");return a(),l("div",{class:M.containerClass},[e.$slots.start?(a(),l("div",v,[s(e.$slots,"start")])):o("",!0),m("ul",b,[(a(!0),l(r,null,c(h.model,((t,n)=>(a(),l(r,{key:t.label+"_"+n},[M.visible(t)?(a(),l("li",{key:0,class:M.getCategoryClass(t),style:t.style,onMouseenter:e=>M.onCategoryMouseEnter(e,t),role:"none"},[e.$slots.item?(a(),l(g(e.$slots.item),{key:1,item:t},null,8,["item"])):(a(),l(r,{key:0},[t.to&&!M.disabled(t)?(a(),l(S,{key:0,to:t.to,custom:""},{default:u((({navigate:e,href:n,isActive:i,isExactActive:s})=>[p(m("a",{href:n,class:M.linkClass(t,{isActive:i,isExactActive:s}),onClick:n=>M.onCategoryClick(n,t,e),onKeydown:e=>M.onCategoryKeydown(e,t),role:"menuitem"},[t.icon?(a(),l("span",{key:0,class:M.getCategoryIcon(t)},null,2)):o("",!0),m("span",k,d(t.label),1)],42,["href","onClick","onKeydown"]),[[D]])])),_:2},1032,["to"])):p((a(),l("a",{key:1,href:t.url,class:M.linkClass(t),target:t.target,onClick:e=>M.onCategoryClick(e,t),onKeydown:e=>M.onCategoryKeydown(e,t),role:"menuitem","aria-haspopup":null!=t.items,"aria-expanded":t===E.activeItem,tabindex:M.disabled(t)?null:"0"},[t.icon?(a(),l("span",{key:0,class:M.getCategoryIcon(t)},null,2)):o("",!0),m("span",y,d(t.label),1),t.items?(a(),l("span",{key:1,class:M.getCategorySubMenuIcon()},null,2)):o("",!0)],42,["href","target","onClick","onKeydown","aria-haspopup","aria-expanded","tabindex"])),[[D]])],64)),t.items?(a(),l("div",f,[m("div",C,[(a(!0),l(r,null,c(t.items,((n,i)=>(a(),l("div",{key:t.label+"_column_"+i,class:M.getColumnClassName(t)},[(a(!0),l(r,null,c(n,((t,n)=>(a(),l("ul",{class:"p-megamenu-submenu",key:t.label+"_submenu_"+n,role:"menu"},[m("li",{class:M.getSubmenuHeaderClass(t),style:t.style,role:"presentation"},d(t.label),7),(a(!0),l(r,null,c(t.items,((t,n)=>(a(),l(r,{key:t.label+n.toString()},[M.visible(t)&&!t.separator?(a(),l("li",{key:0,role:"none",class:M.getSubmenuItemClass(t),style:t.style},[e.$slots.item?(a(),l(g(e.$slots.item),{key:1,item:t},null,8,["item"])):(a(),l(r,{key:0},[t.to&&!M.disabled(t)?(a(),l(S,{key:0,to:t.to,custom:""},{default:u((({navigate:e,href:n,isActive:i,isExactActive:s})=>[p(m("a",{href:n,class:M.linkClass(t,{isActive:i,isExactActive:s}),onClick:n=>M.onLeafClick(n,t,e),role:"menuitem"},[t.icon?(a(),l("span",{key:0,class:["p-menuitem-icon",t.icon]},null,2)):o("",!0),m("span",x,d(t.label),1)],10,["href","onClick"]),[[D]])])),_:2},1032,["to"])):p((a(),l("a",{key:1,href:t.url,class:M.linkClass(t),target:t.target,onClick:e=>M.onLeafClick(e,t),role:"menuitem",tabindex:M.disabled(t)?null:"0"},[t.icon?(a(),l("span",{key:0,class:["p-menuitem-icon",t.icon]},null,2)):o("",!0),m("span",I,d(t.label),1),t.items?(a(),l("span",{key:1,class:e.getSubmenuIcon()},null,2)):o("",!0)],10,["href","target","onClick","tabindex"])),[[D]])],64))],6)):o("",!0),M.visible(t)&&t.separator?(a(),l("li",{class:["p-menu-separator",t.class],style:t.style,key:"separator"+n.toString(),role:"separator"},null,6)):o("",!0)],64)))),128))])))),128))],2)))),128))])])):o("",!0)],46,["onMouseenter"])):o("",!0)],64)))),128))]),e.$slots.end?(a(),l("div",w,[s(e.$slots,"end")])):o("",!0)],2)};export default h;