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) 8.07 kB
"use strict";var e=require("primevue/utils"),t=require("primevue/overlayeventbus"),i=require("primevue/ripple"),n=require("vue");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=l(t),r={name:"Menuitem",inheritAttrs:!1,emits:["click"],props:{item:null,template:null,exact:null},methods:{onClick(e,t){this.$emit("click",{originalEvent:e,item:this.item,navigate:t})},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}]},visible(){return"function"==typeof this.item.visible?this.item.visible():!1!==this.item.visible},disabled:e=>"function"==typeof e.disabled?e.disabled():e.disabled},computed:{containerClass(){return["p-menuitem",this.item.class]}},directives:{ripple:l(i).default}};const o={class:"p-menuitem-text"},a={class:"p-menuitem-text"};r.render=function(e,t,i,l,s,r){const c=n.resolveComponent("router-link"),d=n.resolveDirective("ripple");return r.visible()?(n.openBlock(),n.createBlock("li",{key:0,class:r.containerClass,role:"none",style:i.item.style},[i.template?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(i.template),{key:1,item:i.item},null,8,["item"])):(n.openBlock(),n.createBlock(n.Fragment,{key:0},[i.item.to&&!r.disabled(i.item)?(n.openBlock(),n.createBlock(c,{key:0,to:i.item.to,custom:""},{default:n.withCtx((({navigate:e,href:t,isActive:l,isExactActive:s})=>[n.withDirectives(n.createVNode("a",{href:t,onClick:t=>r.onClick(t,e),class:r.linkClass(i.item,{isActive:l,isExactActive:s}),role:"menuitem"},[n.createVNode("span",{class:["p-menuitem-icon",i.item.icon]},null,2),n.createVNode("span",o,n.toDisplayString(i.item.label),1)],10,["href","onClick"]),[[d]])])),_:1},8,["to"])):n.withDirectives((n.openBlock(),n.createBlock("a",{key:1,href:i.item.url,class:r.linkClass(i.item),onClick:t[1]||(t[1]=(...e)=>r.onClick&&r.onClick(...e)),target:i.item.target,role:"menuitem",tabindex:r.disabled(i.item)?null:"0"},[n.createVNode("span",{class:["p-menuitem-icon",i.item.icon]},null,2),n.createVNode("span",a,n.toDisplayString(i.item.label),1)],10,["href","target","tabindex"])),[[d]])],64))],6)):n.createCommentVNode("",!0)};var c={name:"Menu",emits:["show","hide"],inheritAttrs:!1,props:{popup:{type:Boolean,default:!1},model:{type:Array,default:null},appendTo:{type:String,default:"body"},autoZIndex:{type:Boolean,default:!0},baseZIndex:{type:Number,default:0},exact:{type:Boolean,default:!0}},data:()=>({overlayVisible:!1}),target:null,outsideClickListener:null,scrollHandler:null,resizeListener:null,container:null,beforeUnmount(){this.unbindResizeListener(),this.unbindOutsideClickListener(),this.scrollHandler&&(this.scrollHandler.destroy(),this.scrollHandler=null),this.target=null,this.container&&this.autoZIndex&&e.ZIndexUtils.clear(this.container),this.container=null},methods:{itemClick(e){const t=e.item;t.disabled||(t.command&&t.command(e),t.to&&e.navigate&&e.navigate(e.originalEvent),this.hide())},toggle(e){this.overlayVisible?this.hide():this.show(e)},show(e){this.overlayVisible=!0,this.target=e.currentTarget},hide(){this.overlayVisible=!1,this.target=null},onEnter(t){this.alignOverlay(),this.bindOutsideClickListener(),this.bindResizeListener(),this.bindScrollListener(),this.autoZIndex&&e.ZIndexUtils.set("menu",t,this.baseZIndex+this.$primevue.config.zIndex.menu),this.$emit("show")},onLeave(){this.unbindOutsideClickListener(),this.unbindResizeListener(),this.unbindScrollListener(),this.$emit("hide")},onAfterLeave(t){this.autoZIndex&&e.ZIndexUtils.clear(t)},alignOverlay(){e.DomHandler.absolutePosition(this.container,this.target),this.container.style.minWidth=e.DomHandler.getOuterWidth(this.target)+"px"},bindOutsideClickListener(){this.outsideClickListener||(this.outsideClickListener=e=>{this.overlayVisible&&this.container&&!this.container.contains(e.target)&&!this.isTargetClicked(e)&&this.hide()},document.addEventListener("click",this.outsideClickListener))},unbindOutsideClickListener(){this.outsideClickListener&&(document.removeEventListener("click",this.outsideClickListener),this.outsideClickListener=null)},bindScrollListener(){this.scrollHandler||(this.scrollHandler=new e.ConnectedOverlayScrollHandler(this.target,(()=>{this.overlayVisible&&this.hide()}))),this.scrollHandler.bindScrollListener()},unbindScrollListener(){this.scrollHandler&&this.scrollHandler.unbindScrollListener()},bindResizeListener(){this.resizeListener||(this.resizeListener=()=>{this.overlayVisible&&this.hide()},window.addEventListener("resize",this.resizeListener))},unbindResizeListener(){this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null)},isTargetClicked(){return this.target&&(this.target===event.target||this.target.contains(event.target))},visible:e=>"function"==typeof e.visible?e.visible():!1!==e.visible,containerRef(e){this.container=e},onOverlayClick(e){s.default.emit("overlay-click",{originalEvent:e,target:this.target})}},computed:{containerClass(){return["p-menu p-component",{"p-menu-overlay":this.popup,"p-input-filled":"filled"===this.$primevue.config.inputStyle,"p-ripple-disabled":!1===this.$primevue.config.ripple}]}},components:{Menuitem:r}};const d={class:"p-menu-list p-reset",role:"menu"},m={key:0,class:"p-submenu-header"};!function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css","top"===i&&n.firstChild?n.insertBefore(l,n.firstChild):n.appendChild(l),l.styleSheet?l.styleSheet.cssText=e:l.appendChild(document.createTextNode(e))}}("\n.p-menu-overlay {\n position: absolute;\n top: 0;\n left: 0;\n}\n.p-menu ul {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.p-menu .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-menu .p-menuitem-text {\n line-height: 1;\n}\n"),c.render=function(e,t,i,l,s,r){const o=n.resolveComponent("Menuitem");return n.openBlock(),n.createBlock(n.Teleport,{to:i.appendTo,disabled:!i.popup},[n.createVNode(n.Transition,{name:"p-connected-overlay",onEnter:r.onEnter,onLeave:r.onLeave,onAfterLeave:r.onAfterLeave},{default:n.withCtx((()=>[!i.popup||s.overlayVisible?(n.openBlock(),n.createBlock("div",n.mergeProps({key:0,ref:r.containerRef,class:r.containerClass},e.$attrs,{onClick:t[1]||(t[1]=(...e)=>r.onOverlayClick&&r.onOverlayClick(...e))}),[n.createVNode("ul",d,[(n.openBlock(!0),n.createBlock(n.Fragment,null,n.renderList(i.model,((t,l)=>(n.openBlock(),n.createBlock(n.Fragment,{key:t.label+l.toString()},[t.items&&r.visible(t)&&!t.separator?(n.openBlock(),n.createBlock(n.Fragment,{key:0},[t.items?(n.openBlock(),n.createBlock("li",m,[n.renderSlot(e.$slots,"item",{item:t},(()=>[n.createTextVNode(n.toDisplayString(t.label),1)]))])):n.createCommentVNode("",!0),(n.openBlock(!0),n.createBlock(n.Fragment,null,n.renderList(t.items,((t,s)=>(n.openBlock(),n.createBlock(n.Fragment,{key:t.label+l+s},[r.visible(t)&&!t.separator?(n.openBlock(),n.createBlock(o,{key:0,item:t,onClick:r.itemClick,template:e.$slots.item,exact:i.exact},null,8,["item","onClick","template","exact"])):r.visible(t)&&t.separator?(n.openBlock(),n.createBlock("li",{class:["p-menu-separator",t.class],style:t.style,key:"separator"+l+s,role:"separator"},null,6)):n.createCommentVNode("",!0)],64)))),128))],64)):r.visible(t)&&t.separator?(n.openBlock(),n.createBlock("li",{class:["p-menu-separator",t.class],style:t.style,key:"separator"+l.toString(),role:"separator"},null,6)):(n.openBlock(),n.createBlock(o,{key:t.label+l.toString(),item:t,onClick:r.itemClick,template:e.$slots.item,exact:i.exact},null,8,["item","onClick","template","exact"]))],64)))),128))])],16)):n.createCommentVNode("",!0)])),_:3},8,["onEnter","onLeave","onAfterLeave"])],8,["to","disabled"])},module.exports=c;