vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 5.42 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_vXETable=require("../../v-x-e-table"),_dom=require("../../tools/dom"),_utils=require("../../tools/utils"),_event=require("../../tools/event");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var l in t=arguments[n])Object.prototype.hasOwnProperty.call(t,l)&&(e[l]=t[l]);return e}).apply(this,arguments)},tableMenuMethodKeys=["closeMenu"],tableMenuHook={setupTable:function(_){function m(t,e,n){var v,f=C.ctxMenuStore,o=i.value,l=R.value,e=l[e],g=l.visibleMethod;e&&(v=e.options,e.disabled?t.preventDefault():o&&v&&v.length&&(n.options=v,_.preventEvent(t,"event.showMenu",n,function(){var l,i,u,r,s,a,o,e,c,d;!g||g(n)?(t.preventDefault(),_.updateZindex(),e=(0,_dom.getDomNode)(),l=e.scrollTop,i=e.scrollLeft,u=e.visibleHeight,r=e.visibleWidth,s=t.clientY+l,a=t.clientX+i,o=function(){y._currMenuParams=n,Object.assign(f,{visible:!0,list:v,selected:null,selectChild:null,showChild:!1,style:{zIndex:y.tZindex,top:"".concat(s,"px"),left:"".concat(a,"px")}}),(0,_vue.nextTick)(function(){var e=N.value.getRefMaps().refElem.value,t=e.clientHeight,n=e.clientWidth,e=(0,_dom.getAbsolutePos)(e),o=e.boundingTop,e=e.boundingLeft+n-r;-10<o+t-u&&(f.style.top="".concat(Math.max(l+2,s-t-2),"px")),-10<e&&(f.style.left="".concat(Math.max(i+2,a-n-2),"px"))})},e=n.keyboard,c=n.row,d=n.column,e&&c&&d?_.scrollToRow(c,d).then(function(){var e,t,n=_.getCell(c,d);n&&(e=(t=(0,_dom.getAbsolutePos)(n)).boundingTop,t=t.boundingLeft,s=e+l+Math.floor(n.offsetHeight/2),a=t+i+Math.floor(n.offsetWidth/2)),o()}):o()):x.closeMenu()}))),_.closeFilter()}var x,M=_.xID,E=_.props,C=_.reactData,y=_.internalData,e=_.getRefMaps(),T=e.refElem,w=e.refTableFilter,N=e.refTableMenu,e=_.getComputeMaps(),O=e.computeMouseOpts,i=e.computeIsMenu,R=e.computeMenuOpts,c={},c={moveCtxMenu:function(e,t,n,o,l,i){var u,r=_xeUtils.default.findIndexOf(i,function(e){return t[n]===e});if(o)l&&(0,_utils.hasChildrenList)(t.selected)?t.showChild=!0:(t.showChild=!1,t.selectChild=null);else if((0,_event.hasEventKey)(e,_event.EVENT_KEYS.ARROW_UP)){for(var s=r-1;0<=s;s--)if(!1!==i[s].visible){u=i[s];break}t[n]=u||i[i.length-1]}else if((0,_event.hasEventKey)(e,_event.EVENT_KEYS.ARROW_DOWN)){for(var a=r+1;a<i.length;a++)if(!1!==i[a].visible){u=i[a];break}t[n]=u||i[0]}else t[n]&&((0,_event.hasEventKey)(e,_event.EVENT_KEYS.ENTER)||(0,_event.hasEventKey)(e,_event.EVENT_KEYS.SPACEBAR))&&c.ctxMenuLinkEvent(e,t[n])},handleGlobalContextmenuEvent:function(e){var t=E.mouseConfig,n=E.menuConfig,o=C.editStore,l=C.ctxMenuStore,i=y.visibleColumn,u=w.value,r=N.value,s=O.value,a=R.value,c=T.value,o=o.selected,d=["header","body","footer"];if((0,_utils.isEnableConf)(n)){if(l.visible&&r&&(0,_dom.getEventTargetNode)(e,r.getRefMaps().refElem.value).flag)return void e.preventDefault();if(y._keyCtx){var n="body",v={type:n,$table:_,keyboard:!0,columns:i.slice(0),$event:e};if(t&&s.area){l=_.getActiveCellArea();if(l&&l.row&&l.column)return v.row=l.row,v.column=l.column,void m(e,n,v)}else if(t&&s.selected&&o.row&&o.column)return v.row=o.row,v.column=o.column,void m(e,n,v)}for(var f=0;f<d.length;f++){var g,h,b=d[f],p=(0,_dom.getEventTargetNode)(e,c,"vxe-".concat(b,"--column"),function(e){return e.parentNode.parentNode.parentNode.getAttribute("xid")===M}),v={type:b,$table:_,columns:i.slice(0),$event:e};if(p.flag)return p=p.targetElem,h=(h=_.getColumnNode(p))?h.item:null,g="".concat(b,"-"),h&&Object.assign(v,{column:h,columnIndex:_.getColumnIndex(h),cell:p}),"body"===b&&(g="",p=(h=_.getRowNode(p.parentNode))?h.item:null)&&(v.row=p,v.rowIndex=_.getRowIndex(p)),h="".concat(g,"cell-menu"),m(e,b,v),void _.dispatchEvent(h,v,e);if((0,_dom.getEventTargetNode)(e,c,"vxe-table--".concat(b,"-wrapper"),function(e){return e.getAttribute("xid")===M}).flag)return void("cell"===a.trigger?e.preventDefault():m(e,b,v))}}u&&!(0,_dom.getEventTargetNode)(e,u.$el).flag&&_.closeFilter(),x.closeMenu()},ctxMenuMouseoverEvent:function(e,t,n){var r=e.currentTarget,o=C.ctxMenuStore;e.preventDefault(),e.stopPropagation(),o.selected=t,(o.selectChild=n)||(o.showChild=(0,_utils.hasChildrenList)(t),o.showChild&&(0,_vue.nextTick)(function(){var e,t,n,o,l,i,u=r.nextElementSibling;u&&(t=(i=(0,_dom.getAbsolutePos)(r)).boundingTop,l=i.boundingLeft,e=i.visibleHeight,i=i.visibleWidth,t=t+r.offsetHeight,o=n="",l+r.offsetWidth+u.offsetWidth>i-10&&(n="auto",o="".concat(r.offsetWidth,"px")),i=l="",t+u.offsetHeight>e-10&&(l="auto",i="0"),u.style.left=n,u.style.right=o,u.style.top=l,u.style.bottom=i)}))},ctxMenuMouseoutEvent:function(e,t){var n=C.ctxMenuStore;t.children||(n.selected=null),n.selectChild=null},ctxMenuLinkEvent:function(e,t){var n;t.disabled||!t.code&&t.children&&t.children.length||(n=_vXETable.VXETable.menus.get(t.code),t=Object.assign({},y._currMenuParams,{menu:t,$table:_,$grid:_.xegrid,$event:e}),n&&n.menuMethod&&n.menuMethod(t,e),_.dispatchEvent("menu-click",t,e),x.closeMenu())}};return __assign(__assign({},x={closeMenu:function(){return Object.assign(C.ctxMenuStore,{visible:!1,selected:null,selectChild:null,showChild:!1}),(0,_vue.nextTick)()}}),c)},setupGrid:function(e){return e.extendTableMethods(tableMenuMethodKeys)}},_default=tableMenuHook;exports.default=_default;