primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue)
2 lines (1 loc) • 7.12 kB
JavaScript
"use strict";var e=require("primevue/utils"),t=require("primevue/ripple"),i=require("vue");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l={inheritAttrs:!1,emits:["click"],props:{item:null},methods:{onClick(e,t){this.$emit("click",{originalEvent:e,item:this.item,navigate:t})},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(t).default}};const s={class:"p-menuitem-text"},r={class:"p-menuitem-text"};l.render=function(e,t,n,l,o,a){const c=i.resolveComponent("router-link"),d=i.resolveDirective("ripple");return a.visible()?(i.openBlock(),i.createBlock("li",{key:0,class:a.containerClass,role:"none",style:n.item.style},[n.item.to&&!n.item.disabled?(i.openBlock(),i.createBlock(c,{key:0,to:n.item.to,custom:""},{default:i.withCtx((({navigate:e,href:t})=>[i.withDirectives(i.createVNode("a",{href:t,onClick:t=>a.onClick(t,e),class:a.linkClass,role:"menuitem"},[i.createVNode("span",{class:["p-menuitem-icon",n.item.icon]},null,2),i.createVNode("span",s,i.toDisplayString(n.item.label),1)],10,["href","onClick"]),[[d]])])),_:1},8,["to"])):i.withDirectives((i.openBlock(),i.createBlock("a",{key:1,href:n.item.url,class:a.linkClass,onClick:t[1]||(t[1]=(...e)=>a.onClick&&a.onClick(...e)),target:n.item.target,role:"menuitem",tabindex:n.item.disabled?null:"0"},[i.createVNode("span",{class:["p-menuitem-icon",n.item.icon]},null,2),i.createVNode("span",r,i.toDisplayString(n.item.label),1)],10,["href","target","tabindex"])),[[d]])],6)):i.createCommentVNode("",!0)};var o={props:{popup:{type:Boolean,default:!1},model:{type:Array,default:null},appendTo:{type:String,default:null},autoZIndex:{type:Boolean,default:!0},baseZIndex:{type:Number,default:0}},data:()=>({overlayVisible:!1}),target:null,outsideClickListener:null,scrollHandler:null,resizeListener:null,relativeAlign:!1,container:null,beforeUnmount(){this.restoreAppend(),this.unbindResizeListener(),this.unbindOutsideClickListener(),this.scrollHandler&&(this.scrollHandler.destroy(),this.scrollHandler=null),this.target=null,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.relativeAlign=e.relativeAlign,this.target=e.currentTarget},hide(){this.overlayVisible=!1,this.target=null,this.relativeAlign=!1},onEnter(){this.appendContainer(),this.alignOverlay(),this.bindOutsideClickListener(),this.bindResizeListener(),this.bindScrollListener(),this.autoZIndex&&(this.container.style.zIndex=String(this.baseZIndex+e.DomHandler.generateZIndex()))},onLeave(){this.unbindOutsideClickListener(),this.unbindResizeListener(),this.unbindScrollListener()},alignOverlay(){this.relativeAlign?e.DomHandler.relativePosition(this.container,this.target):e.DomHandler.absolutePosition(this.container,this.target)},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))},appendContainer(){this.appendTo&&("body"===this.appendTo?document.body.appendChild(this.container):document.getElementById(this.appendTo).appendChild(this.container))},restoreAppend(){this.container&&this.appendTo&&("body"===this.appendTo?document.body.removeChild(this.container):document.getElementById(this.appendTo).removeChild(this.container))},visible:e=>"function"==typeof e.visible?e.visible():!1!==e.visible,containerRef(e){this.container=e}},computed:{containerClass(){return["p-menu p-component",{"p-menu-overlay":this.popup}]}},components:{Menuitem:l}};const a={class:"p-menu-list p-reset",role:"menu"};!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}\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"),o.render=function(e,t,n,l,s,r){const o=i.resolveComponent("Menuitem");return i.openBlock(),i.createBlock(i.Transition,{name:"p-connected-overlay",onEnter:r.onEnter,onLeave:r.onLeave},{default:i.withCtx((()=>[!n.popup||s.overlayVisible?(i.openBlock(),i.createBlock("div",{key:0,ref:r.containerRef,class:r.containerClass},[i.createVNode("ul",a,[(i.openBlock(!0),i.createBlock(i.Fragment,null,i.renderList(n.model,((e,t)=>(i.openBlock(),i.createBlock(i.Fragment,null,[e.items&&r.visible(e)&&!e.separator?(i.openBlock(),i.createBlock(i.Fragment,{key:0},[e.items?(i.openBlock(),i.createBlock("li",{class:"p-submenu-header",key:e.label+t},i.toDisplayString(e.label),1)):i.createCommentVNode("",!0),(i.openBlock(!0),i.createBlock(i.Fragment,null,i.renderList(e.items,((e,n)=>(i.openBlock(),i.createBlock(i.Fragment,null,[r.visible(e)&&!e.separator?(i.openBlock(),i.createBlock(o,{key:e.label+t+n,item:e,onClick:r.itemClick},null,8,["item","onClick"])):r.visible(e)&&e.separator?(i.openBlock(),i.createBlock("li",{class:["p-menu-separator",e.class],style:e.style,key:"separator"+t+n,role:"separator"},null,6)):i.createCommentVNode("",!0)],64)))),256))],64)):r.visible(e)&&e.separator?(i.openBlock(),i.createBlock("li",{class:["p-menu-separator",e.class],style:e.style,key:"separator"+t,role:"separator"},null,6)):(i.openBlock(),i.createBlock(o,{key:e.label+t,item:e,onClick:r.itemClick},null,8,["item","onClick"]))],64)))),256))])],2)):i.createCommentVNode("",!0)])),_:1},8,["onEnter","onLeave"])},module.exports=o;