UNPKG

vhb-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 6.29 kB
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_utils=_interopRequireWildcard(require("../../tools/utils")),_dom=_interopRequireDefault(require("../../tools/dom")),_vHBTable=_interopRequireDefault(require("../../v-h-b-table")),_log=require("../../tools/log");function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_getRequireWildcardCache=function(e){return e?n:t})(e)}function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var i={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var r=o?Object.getOwnPropertyDescriptor(e,l):null;r&&(r.get||r.set)?Object.defineProperty(i,l,r):i[l]=e[l]}return i.default=e,n&&n.set(e,i),i}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,n,i,o,l,r){var s,u=_xeUtils.default.findIndexOf(r,function(e){return n[i]===e});if(t===o)l&&_utils.default.hasChildrenList(n.selected)?n.showChild=!0:(n.showChild=!1,n.selectChild=null);else if(38===t){for(var c=u-1;0<=c;c--)if(!1!==r[c].visible){s=r[c];break}n[i]=s||r[r.length-1]}else if(40===t){for(var a=u+1;a<r.length;a++)if(!1!==r[a].visible){s=r[a];break}n[i]=s||r[0]}else!n[i]||13!==t&&32!==t||this.ctxMenuLinkEvent(e,n[i])},handleGlobalContextmenuEvent:function(e){var t=this.$refs,n=this.tId,i=this.editStore,o=this.menuConfig,l=this.contextMenu,r=this.ctxMenuStore,s=this.ctxMenuOpts,u=this.mouseConfig,c=this.mouseOpts,a=i.selected,d=["header","body","footer"];if((0,_utils.isEnableConf)(o)||l){if(r.visible&&t.ctxWrapper&&_dom.default.getEventTargetNode(e,t.ctxWrapper.$el).flag)return void e.preventDefault();if(this._keyCtx){var f="body",h={type:f,$grid:this.$xegrid,$table:this,keyboard:!0,columns:this.visibleColumn.slice(0),$event:e};if(u&&c.area){var p=this.getActiveCellArea();if(p&&p.row&&p.column)return h.row=p.row,h.column=p.column,void this.openContextMenu(e,f,h)}else if(u&&c.selected&&a.row&&a.column)return h.row=a.row,h.column=a.column,void this.openContextMenu(e,f,h)}for(var v=0;v<d.length;v++){var g=d[v],b=_dom.default.getEventTargetNode(e,this.$el,"vhb-".concat(g,"--column"),function(e){return e.parentNode.parentNode.parentNode.getAttribute("xid")===n}),m={type:g,$grid:this.$xegrid,$table:this,columns:this.visibleColumn.slice(0),$event:e};if(b.flag){var x=b.targetElem,_=this.getColumnNode(x).item,y="".concat(g,"-");if(Object.assign(m,{column:_,columnIndex:this.getColumnIndex(_),cell:x}),"body"===g){var M=this.getRowNode(x.parentNode).item;y="",m.row=M,m.rowIndex=this.getRowIndex(M)}return this.openContextMenu(e,g,m),void(this.$listeners["".concat(y,"cell-context-menu")]?("development"===process.env.NODE_ENV&&(0,_log.warnLog)("vhb.error.delEvent",["".concat(y,"cell-context-menu"),"".concat(y,"cell-menu")]),this.emitEvent("".concat(y,"cell-context-menu"),m,e)):this.emitEvent("".concat(y,"cell-menu"),m,e))}if(_dom.default.getEventTargetNode(e,this.$el,"vhb-table--".concat(g,"-wrapper"),function(e){return e.getAttribute("xid")===n}).flag)return void("cell"===s.trigger?e.preventDefault():this.openContextMenu(e,g,m))}}t.filterWrapper&&!_dom.default.getEventTargetNode(e,t.filterWrapper.$el).flag&&this.closeFilter(),this.closeMenu()},openContextMenu:function(n,e,i){var h=this,t=this.isCtxMenu,p=this.ctxMenuStore,o=this.ctxMenuOpts,l=o[e],v=o.visibleMethod;if(l){var g=l.options;l.disabled?n.preventDefault():t&&g&&g.length&&(i.options=g,this.preventEvent(n,"event.showMenu",i,function(){if(!v||v(i)){n.preventDefault(),h.updateZindex();var e=_dom.default.getDomNode(),r=e.scrollTop,s=e.scrollLeft,u=e.visibleHeight,c=e.visibleWidth,a=n.clientY+r,d=n.clientX+s,o=function(){Object.assign(p,{args:i,visible:!0,list:g,selected:null,selectChild:null,showChild:!1,style:{zIndex:h.tZindex,top:"".concat(a,"px"),left:"".concat(d,"px")}}),h.$nextTick(function(){var e=h.$refs.ctxWrapper.$el,t=e.clientHeight,n=e.clientWidth,i=_dom.default.getAbsolutePos(e),o=i.boundingTop,l=i.boundingLeft+n-c;-10<o+t-u&&(p.style.top="".concat(Math.max(r+2,a-t-2),"px")),-10<l&&(p.style.left="".concat(Math.max(s+2,d-n-2),"px"))})},t=i.keyboard,l=i.row,f=i.column;t&&l&&f?h.scrollToRow(l,f).then(function(){var e=h.getCell(l,f),t=_dom.default.getAbsolutePos(e),n=t.boundingTop,i=t.boundingLeft;a=n+r+Math.floor(e.offsetHeight/2),d=i+s+Math.floor(e.offsetWidth/2),o()}):o()}else h.closeMenu()}))}this.closeFilter()},ctxMenuMouseoverEvent:function(e,t,n){var d=e.currentTarget,i=this.ctxMenuStore;e.preventDefault(),e.stopPropagation(),i.selected=t,(i.selectChild=n)||(i.showChild=_utils.default.hasChildrenList(t),i.showChild&&this.$nextTick(function(){var e=d.nextElementSibling;if(e){var t=_dom.default.getAbsolutePos(d),n=t.boundingTop,i=t.boundingLeft,o=t.visibleHeight,l=t.visibleWidth,r=n+d.offsetHeight,s="",u="";i+d.offsetWidth+e.offsetWidth>l-10&&(s="auto",u="".concat(d.offsetWidth,"px"));var c="",a="";r+e.offsetHeight>o-10&&(c="auto",a="0"),e.style.left=s,e.style.right=u,e.style.top=c,e.style.bottom=a}}))},ctxMenuMouseoutEvent:function(e,t){var n=this.ctxMenuStore;t.children||(n.selected=null),n.selectChild=null},ctxMenuLinkEvent:function(e,t){if(!t.disabled&&(t.code||!t.children||!t.children.length)){var n=_vHBTable.default.menus.get(t.code),i=Object.assign({menu:t,$grid:this.$xegrid,$table:this,$event:e},this.ctxMenuStore.args);n&&n.call(this,i,e),this.$listeners["context-menu-click"]?("development"===process.env.NODE_ENV&&(0,_log.warnLog)("vhb.error.delEvent",["context-menu-click","menu-click"]),this.emitEvent("context-menu-click",i,e)):this.emitEvent("menu-click",i,e),this.closeMenu()}}}};exports.default=_default;