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