@progress/kendo-vue-layout
Version:
9 lines (8 loc) • 2.4 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),r=require("@progress/kendo-vue-common"),u=require("@progress/kendo-vue-popup"),l=require("../menu/components/Menu.js");function c(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!o.isVNode(e)}const d=o.defineComponent({name:"KendoContextMenu",props:{show:{type:Boolean,default:!1},offset:{type:Object,default:()=>({left:0,top:0})},items:{type:Array,default:void 0},dir:String,itemRender:[String,Object,Function],linkRender:[String,Object,Function],customCloseItemIds:Array,className:String},emits:["close","select"],data(){return{visible:this.show}},watch:{show(e){this.visible=e,r.canUseDOM&&(e?(o.nextTick(()=>{var n;const t=(n=this.$refs.popupRef)==null?void 0:n.$el,s=t==null?void 0:t.querySelector(".k-menu-item"),i=r.getActiveElement(t==null?void 0:t.ownerDocument);s&&s!==i&&s.focus()}),document.addEventListener("mousedown",this.handleClickOutside)):document.removeEventListener("mousedown",this.handleClickOutside))}},unmounted(){r.canUseDOM&&document.removeEventListener("mousedown",this.handleClickOutside)},methods:{handleClose(){this.$emit("close")},handleSelect(e){this.$emit("select",e)},handleClickOutside(e){var i,n;const t=(i=this.$refs.popupRef)==null?void 0:i.$el,s=e.target;if(t&&!t.contains(s)){if((n=s.closest)!=null&&n.call(s,".k-menu-item"))return;this.handleClose()}}},render(){var s;let e;const t=this.visible&&((s=this.$props.items)==null?void 0:s.length);return o.createVNode(u.Popup,{ref:"popupRef",show:!!t,offset:this.$props.offset,popupClass:"k-menu-popup k-overflow-visible"},{default:()=>[t?o.createVNode(l.Menu,{vertical:!0,items:this.$props.items,dir:this.$props.dir,itemRender:this.$props.itemRender,linkRender:this.$props.linkRender,customCloseItemIds:this.$props.customCloseItemIds,class:["k-context-menu",this.$props.className],onSelect:this.handleSelect},c(e=r.getDefaultSlots(this))?e:{default:()=>[e]}):void 0]})}});exports.ContextMenu=d;