vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 5.29 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_tools=require("../../tools"),_vXETable=_interopRequireDefault(require("../../v-x-e-table"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default={methods:{_closeMenu:function(){return Object.assign(this.ctxMenuStore,{visible:!1,selected:null,selectChild:null,showChild:!1}),this.$nextTick()},moveCtxMenu:function(e,t,o,n,i,l,s){var r,c=_ctor.default.findIndexOf(s,function(e){return o[n]===e});if(t===i)l&&_tools.UtilTools.hasChildrenList(o.selected)?o.showChild=!0:(o.showChild=!1,o.selectChild=null);else if(38===t){for(var u=c-1;0<=u;u--)if(!1!==s[u].visible){r=s[u];break}o[n]=r||s[s.length-1]}else if(40===t){for(var a=c+1;a<s.length;a++)if(!1!==s[a].visible){r=s[a];break}o[n]=r||s[0]}else!o[n]||13!==t&&32!==t||this.ctxMenuLinkEvent(e,o[n])},handleGlobalContextmenuEvent:function(e){var t=this.$refs,o=this.tId,n=this.editStore,i=this.menuConfig,l=this.contextMenu,s=this.ctxMenuStore,r=this.ctxMenuOpts,c=this.mouseConfig,u=this.mouseOpts,a=n.selected,h=["header","body","footer"];if(i||l){if(s.visible&&t.ctxWrapper&&_tools.DomTools.getEventTargetNode(e,t.ctxWrapper.$el).flag)return void e.preventDefault();if(this._keyCtx){var d="body",f={type:d,$grid:this.$xegrid,$table:this,keyboard:!0,columns:this.visibleColumn.slice(0),$event:e};if(c&&u.area){var v=this.getActiveCellArea();if(v&&v.row&&v.column)return f.row=v.row,f.column=v.column,void this.openContextMenu(e,d,f)}else if(c&&u.selected&&a.row&&a.column)return f.row=a.row,f.column=a.column,void this.openContextMenu(e,d,f)}for(var g=0;g<h.length;g++){var x=h[g],p=_tools.DomTools.getEventTargetNode(e,this.$el,"vxe-".concat(x,"--column"),function(e){return e.parentNode.parentNode.parentNode.getAttribute("data-tid")===o}),m={type:x,$grid:this.$xegrid,$table:this,columns:this.visibleColumn.slice(0),$event:e};if(p.flag){var b=p.targetElem,_=this.getColumnNode(b).item,M="".concat(x,"-");if(Object.assign(m,{column:_,columnIndex:this.getColumnIndex(_),cell:b}),"body"===x){var C=this.getRowNode(b.parentNode).item;M="",m.row=C,m.rowIndex=this.getRowIndex(C)}return this.openContextMenu(e,x,m),void(this.$listeners["".concat(M,"cell-context-menu")]?("development"===process.env.VUE_APP_VXE_TABLE_ENV&&_tools.UtilTools.warn("vxe.error.delEvent",["".concat(M,"cell-context-menu"),"".concat(M,"cell-menu")]),this.emitEvent("".concat(M,"cell-context-menu"),m,e)):this.emitEvent("".concat(M,"cell-menu"),m,e))}if(_tools.DomTools.getEventTargetNode(e,this.$el,"vxe-table--".concat(x,"-wrapper"),function(e){return e.getAttribute("data-tid")===o}).flag)return void("cell"===r.trigger?e.preventDefault():this.openContextMenu(e,x,m))}}t.filterWrapper&&!_tools.DomTools.getEventTargetNode(e,t.filterWrapper.$el).flag&&this.closeFilter(),this.closeMenu()},openContextMenu:function(o,e,n){var f=this,v=this.ctxMenuStore,t=this.ctxMenuOpts,i=t[e],g=t.visibleMethod;if(i){var x=i.options;i.disabled?o.preventDefault():x&&x.length&&(n.options=x,this.preventEvent(o,"event.showMenu",n,null,function(){if(!g||g(n)){o.preventDefault(),f.updateZindex();var e=_tools.DomTools.getDomNode(),s=e.scrollTop,r=e.scrollLeft,c=e.visibleHeight,u=e.visibleWidth,a=o.clientY+s,h=o.clientX+r,i=function(){Object.assign(v,{args:n,visible:!0,list:x,selected:null,selectChild:null,showChild:!1,style:{zIndex:f.tZindex,top:"".concat(a,"px"),left:"".concat(h,"px")}}),f.$nextTick(function(){var e=f.$refs.ctxWrapper.$el,t=e.clientHeight,o=e.clientWidth,n=_tools.DomTools.getAbsolutePos(e),i=n.boundingTop,l=n.boundingLeft+o-u;-10<i+t-c&&(v.style.top="".concat(Math.max(s+2,a-t-2),"px")),-10<l&&(v.style.left="".concat(Math.max(r+2,h-o-2),"px"))})},t=n.keyboard,l=n.row,d=n.column;t&&l&&d?f.scrollToRow(l,d).then(function(){var e=f.getCell(l,d),t=_tools.DomTools.getAbsolutePos(e),o=t.boundingTop,n=t.boundingLeft;a=o+s+Math.floor(e.offsetHeight/2),h=n+r+Math.floor(e.offsetWidth/2),i()}):i()}else f.closeMenu()}))}this.closeFilter()},ctxMenuMouseoverEvent:function(e,t,o){var h=e.currentTarget,n=this.ctxMenuStore;e.preventDefault(),e.stopPropagation(),n.selected=t,(n.selectChild=o)||(n.showChild=_tools.UtilTools.hasChildrenList(t),n.showChild&&this.$nextTick(function(){var e=h.nextElementSibling;if(e){var t=_tools.DomTools.getAbsolutePos(h),o=t.boundingTop,n=t.boundingLeft,i=t.visibleHeight,l=t.visibleWidth,s=o+h.offsetHeight,r="",c="";n+h.offsetWidth+e.offsetWidth>l-10&&(r="auto",c="".concat(h.offsetWidth,"px"));var u="",a="";s+e.offsetHeight>i-10&&(u="auto",a="0"),e.style.left=r,e.style.right=c,e.style.top=u,e.style.bottom=a}}))},ctxMenuMouseoutEvent:function(e,t){var o=this.ctxMenuStore;t.children||(o.selected=null),o.selectChild=null},ctxMenuLinkEvent:function(e,t){if(!(t.disabled||t.children&&t.children.length)){var o=_vXETable.default.menus.get(t.code),n=Object.assign({menu:t,$grid:this.$xegrid,$table:this,$event:e},this.ctxMenuStore.args);o&&o.call(this,n,e),this.$listeners["context-menu-click"]?("development"===process.env.VUE_APP_VXE_TABLE_ENV&&_tools.UtilTools.warn("vxe.error.delEvent",["context-menu-click","menu-click"]),this.emitEvent("context-menu-click",n,e)):this.emitEvent("menu-click",n,e),this.closeMenu()}}}};exports.default=_default;