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)

2 lines (1 loc) 6.42 kB
import{DomHandler as e,ConnectedOverlayScrollHandler as i}from"primevue/utils";import t from"primevue/overlayeventbus";import n from"primevue/ripple";import{resolveComponent as s,resolveDirective as l,openBlock as r,createBlock as o,withCtx as a,withDirectives as c,createVNode as d,toDisplayString as u,createCommentVNode as m,Teleport as h,Transition as p,mergeProps as b,Fragment as v,renderList as y}from"vue";var k={inheritAttrs:!1,emits:["click"],props:{item:null},methods:{onClick(e,i){this.$emit("click",{originalEvent:e,item:this.item,navigate:i})},visible(){return"function"==typeof this.item.visible?this.item.visible():!1!==this.item.visible}},computed:{containerClass(){return["p-menuitem",this.item.class]},linkClass(){return["p-menuitem-link",{"p-disabled":this.item.disabled}]}},directives:{ripple:n}};const g={class:"p-menuitem-text"},C={class:"p-menuitem-text"};k.render=function(e,i,t,n,h,p){const b=s("router-link"),v=l("ripple");return p.visible()?(r(),o("li",{key:0,class:p.containerClass,role:"none",style:t.item.style},[t.item.to&&!t.item.disabled?(r(),o(b,{key:0,to:t.item.to,custom:""},{default:a((({navigate:e,href:i})=>[c(d("a",{href:i,onClick:i=>p.onClick(i,e),class:p.linkClass,role:"menuitem"},[d("span",{class:["p-menuitem-icon",t.item.icon]},null,2),d("span",g,u(t.item.label),1)],10,["href","onClick"]),[[v]])])),_:1},8,["to"])):c((r(),o("a",{key:1,href:t.item.url,class:p.linkClass,onClick:i[1]||(i[1]=(...e)=>p.onClick&&p.onClick(...e)),target:t.item.target,role:"menuitem",tabindex:t.item.disabled?null:"0"},[d("span",{class:["p-menuitem-icon",t.item.icon]},null,2),d("span",C,u(t.item.label),1)],10,["href","target","tabindex"])),[[v]])],6)):m("",!0)};var f={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}},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=null},methods:{itemClick(e){const i=e.item;i.disabled||(i.command&&i.command(e),i.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(){this.alignOverlay(),this.bindOutsideClickListener(),this.bindResizeListener(),this.bindScrollListener(),this.autoZIndex&&(this.container.style.zIndex=String(this.baseZIndex+e.generateZIndex()))},onLeave(){this.unbindOutsideClickListener(),this.unbindResizeListener(),this.unbindScrollListener()},alignOverlay(){e.absolutePosition(this.container,this.target),this.container.style.minWidth=e.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 i(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){t.emit("overlay-click",{originalEvent:e,target:this.target})}},computed:{containerClass(){return["p-menu p-component",{"p-menu-overlay":this.popup}]}},components:{Menuitem:k}};const L={class:"p-menu-list p-reset",role:"menu"},x={key:0,class:"p-submenu-header"};!function(e,i){void 0===i&&(i={});var t=i.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===t&&n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}("\n.p-menu-overlay {\n position: absolute;\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"),f.render=function(e,i,t,n,l,c){const k=s("Menuitem");return r(),o(h,{to:t.appendTo,disabled:!t.popup},[d(p,{name:"p-connected-overlay",onEnter:c.onEnter,onLeave:c.onLeave},{default:a((()=>[!t.popup||l.overlayVisible?(r(),o("div",b({key:0,ref:c.containerRef,class:c.containerClass},e.$attrs,{onClick:i[1]||(i[1]=(...e)=>c.onOverlayClick&&c.onOverlayClick(...e))}),[d("ul",L,[(r(!0),o(v,null,y(t.model,((e,i)=>(r(),o(v,{key:e.label+i.toString()},[e.items&&c.visible(e)&&!e.separator?(r(),o(v,{key:0},[e.items?(r(),o("li",x,u(e.label),1)):m("",!0),(r(!0),o(v,null,y(e.items,((e,t)=>(r(),o(v,{key:e.label+i+t},[c.visible(e)&&!e.separator?(r(),o(k,{key:0,item:e,onClick:c.itemClick},null,8,["item","onClick"])):c.visible(e)&&e.separator?(r(),o("li",{class:["p-menu-separator",e.class],style:e.style,key:"separator"+i+t,role:"separator"},null,6)):m("",!0)],64)))),128))],64)):c.visible(e)&&e.separator?(r(),o("li",{class:["p-menu-separator",e.class],style:e.style,key:"separator"+i.toString(),role:"separator"},null,6)):(r(),o(k,{key:e.label+i.toString(),item:e,onClick:c.itemClick},null,8,["item","onClick"]))],64)))),128))])],16)):m("",!0)])),_:1},8,["onEnter","onLeave"])],8,["to","disabled"])};export default f;