UNPKG

@progress/kendo-vue-data-tools

Version:
9 lines (8 loc) 3.13 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),n=require("@progress/kendo-vue-common"),r=require("@progress/kendo-vue-popup"),s=require("@progress/kendo-svg-icons"),c=require("./ColumnMenuContent.js"),l=require("../navigation/utils.js"),u=require("@progress/kendo-vue-intl"),i=require("../messages/main.js"),a=o.defineComponent({name:"KendoColumnMenu",props:{animate:{type:[Boolean,Object],default:function(){return!0}},column:Object,sortable:[Boolean,Object],sort:{type:Array},opened:Boolean,filter:Object,filterable:Boolean,filterOperators:Object,render:[Boolean,String,Function,Object],onClose:Function,onSortchange:Function,onFilterchange:Function},inject:{kendoIntlService:{default:null},kendoLocalizationService:{default:null}},data(){return{show:!1,blurTimeout:void 0}},created(){this._anchor=n.guid()},computed:{currentOpen(){return this.show||this.$props.opened}},watch:{currentOpen:function(e){this.$nextTick(function(){if(this._content=this.$refs.content,e&&this._content){const t=l.tableKeyboardNavigationTools.getFocusableElements(this._content,{focusable:!0});t.length?t[0].focus():this._content.focus()}})}},methods:{blur(){clearTimeout(this.blurTimeout),this.blurTimeout=setTimeout(()=>{this.closeMenu()},200)},focus(){clearTimeout(this.blurTimeout)},handleFocus(e){clearTimeout(this.blurTimeout)},anchorClick(e){e.preventDefault(),this.show=!this.show},closeMenu(){this.$emit("close"),this.show=!1},sortChange(e,t){this.$emit("sortchange",e,t)},filterChange(e,t){this.$emit("filterchange",e,t)}},setup(){return{kendoLocalizationService:o.inject("kendoLocalizationService",{})}},render(){const e=this.$props.render,t=u.provideLocalizationService(this);return o.createVNode("div",{style:{display:"inline"}},[o.createVNode("div",{class:"k-grid-column-menu k-grid-filter",tabindex:0,title:`${this.$props.column.field} ${t.toLanguageString(i.columnMenu,i.messages[i.columnMenu])}`,ref:n.setRef(this,"kendoAnchor"),onClick:this.anchorClick},[o.createVNode(n.Icon,{name:"more-vertical",icon:s.moreVerticalIcon},null)]),o.createVNode(r.Popup,{animate:this.$props.animate,anchor:this._anchor,show:this.currentOpen},{default:()=>[o.createVNode("div",{ref:"content",class:"k-column-menu k-grid-columnmenu-popup",tabindex:0,onFocusout:this.blur,onFocusin:this.focus,style:{outline:"none",width:"230px"}},[o.createVNode(c.ColumnMenuContent,{column:this.$props.column,sortable:this.$props.sortable,sort:this.$props.sort,filter:this.$props.filter,filterable:this.$props.filterable,filterOperators:this.$props.filterOperators,render:e,onContentfocus:this.handleFocus,onClosemenu:this.closeMenu,onSortchange:this.sortChange,onFilterchange:this.filterChange},null)])]})])}});exports.ColumnMenu=a;