vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
1 lines • 6.55 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")),_dom=_interopRequireWildcard(require("../../tools/dom"));function _getRequireWildcardCache(e){var t,o;return"function"!=typeof WeakMap?null:(t=new WeakMap,o=new WeakMap,(_getRequireWildcardCache=function(e){return e?o: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 o,n,l={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&((n=r?Object.getOwnPropertyDescriptor(e,o):null)&&(n.get||n.set)?Object.defineProperty(l,o,n):l[o]=e[o]);return l.default=e,t&&t.set(e,l),l}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function getTargetOffset(e,t){var o,n,l=0,r=0,i=!_dom.browse.firefox&&_dom.default.hasClass(e,"vxe-checkbox--label");for(i&&(o=getComputedStyle(e),l-=_xeUtils.default.toNumber(o.paddingTop),r-=_xeUtils.default.toNumber(o.paddingLeft));e&&e!==t;)l+=e.offsetTop,r+=e.offsetLeft,e=e.offsetParent,i&&(n=getComputedStyle(e),l-=_xeUtils.default.toNumber(n.paddingTop),r-=_xeUtils.default.toNumber(n.paddingLeft));return{offsetTop:l,offsetLeft:r}}function getCheckboxRangeRows(e,t,o,n){var l=0,r=[],i=0<n,c=0<n?n:Math.abs(n)+o.offsetHeight,n=e.afterFullData,s=e.scrollYStore;if(e.scrollYLoad)t=e.getVTRowIndex(t.row),r=i?n.slice(t,t+Math.ceil(c/s.rowHeight)):n.slice(t-Math.floor(c/s.rowHeight)+1,t+1);else for(var a=i?"next":"previous";o&&l<c;)r.push(e.getRowNode(o).item),l+=o.offsetHeight,o=o["".concat(a,"ElementSibling")];return r}var _default={methods:{moveTabSelected:function(e,t,o){var n,l,r,i=this,c=this.afterFullData,s=this.visibleColumn,a=this.editConfig,u=this.editOpts,d=Object.assign({},e),e=this.getVTRowIndex(d.row),f=this.getVTColumnIndex(d.column),t=(o.preventDefault(),t?f<=0?0<e&&(n=c[l=e-1],r=s.length-1):r=f-1:f>=s.length-1?e<c.length-1&&(n=c[l=e+1],r=0):r=f+1,s[r]);t&&(n?(d.rowIndex=l,d.row=n):d.rowIndex=e,d.columnIndex=r,d.column=t,d.cell=this.getCell(d.row,d.column),a?"click"!==u.trigger&&"dblclick"!==u.trigger||("row"===u.mode?this.handleActived(d,o):this.scrollToRow(d.row,d.column).then(function(){return i.handleSelected(d,o)})):this.scrollToRow(d.row,d.column).then(function(){return i.handleSelected(d,o)}))},moveCurrentRow:function(e,t,o){var n,l,r=this,i=this.currentRow,c=this.treeConfig,s=this.treeOpts,a=this.afterFullData;o.preventDefault(),i?c?(s=(c=_xeUtils.default.findTree(a,function(e){return e===i},s)).index,c=c.items,e&&0<s?n=c[s-1]:t&&s<c.length-1&&(n=c[s+1])):(c=this.getVTRowIndex(i),e&&0<c?n=a[c-1]:t&&c<a.length-1&&(n=a[c+1])):n=a[0],n&&(l={$table:this,row:n},this.scrollToRow(n).then(function(){return r.triggerCurrentRowEvent(o,l)}))},moveSelected:function(e,t,o,n,l,r){var i=this,c=this.afterFullData,s=this.visibleColumn,a=Object.assign({},e),e=this.getVTRowIndex(a.row),u=this.getVTColumnIndex(a.column);r.preventDefault(),o&&0<e?(a.rowIndex=e-1,a.row=c[a.rowIndex]):l&&e<c.length-1?(a.rowIndex=e+1,a.row=c[a.rowIndex]):t&&u?(a.columnIndex=u-1,a.column=s[a.columnIndex]):n&&u<s.length-1&&(a.columnIndex=u+1,a.column=s[a.columnIndex]),this.scrollToRow(a.row,a.column).then(function(){a.cell=i.getCell(a.row,a.column),i.handleSelected(a,r)})},triggerHeaderCellMousedownEvent:function(e,t){var o,n=this.mouseConfig,l=this.mouseOpts;n&&l.area&&this.handleHeaderCellAreaEvent&&(n=e.currentTarget,l=_dom.default.getEventTargetNode(e,n,"vxe-cell--sort").flag,o=_dom.default.getEventTargetNode(e,n,"vxe-cell--filter").flag,this.handleHeaderCellAreaEvent(e,Object.assign({cell:n,triggerSort:l,triggerFilter:o},t))),this.focus(),this.closeMenu()},triggerCellMousedownEvent:function(e,t){var o=e.currentTarget;t.cell=o,this.handleCellMousedownEvent(e,t),this.focus(),this.closeFilter(),this.closeMenu()},handleCellMousedownEvent:function(e,t){var o=this.editConfig,n=this.editOpts,l=this.handleSelected,r=this.checkboxConfig,i=this.checkboxOpts,c=this.mouseConfig,s=this.mouseOpts;c&&s.area&&this.handleCellAreaEvent&&this.handleCellAreaEvent(e,t),r&&i.range&&this.handleCheckboxRangeEvent(e,t),c&&s.selected&&(o&&"cell"!==n.mode||l(t,e))},handleCheckboxRangeEvent:function(e,c){var t,o,s,a,u,d,n,l,f,h,g,m,p,v,x,b,w,C,y,R,_,T,r,k=this,i=c.column,O=c.cell;"checkbox"===i.type&&(t=this.$el,o=this.elemStore,s=e.clientX,a=e.clientY,u=o["".concat(i.fixed||"main","-body-wrapper")]||o["main-body-wrapper"],d=u.querySelector(".vxe-table--checkbox-range"),n=document.onmousemove,l=document.onmouseup,f=O.parentNode,h=this.getCheckboxRecords(),g=[],m=1,i=getTargetOffset(e.target,u),p=i.offsetTop+e.offsetY,v=i.offsetLeft+e.offsetX,x=u.scrollTop,b=f.offsetHeight,w=null,C=!1,y=1,R=function(e,t){k.emitEvent("checkbox-range-".concat(e),{records:k.getCheckboxRecords(),reserves:k.getCheckboxReserveRecords()},t)},_=function(e){var t=e.clientX,o=e.clientY,t=t-s,o=o-a+(u.scrollTop-x),n=Math.abs(o),l=Math.abs(t),r=p,i=v,t=(o<m?(r+=o)<m&&(r=m,n=p):n=Math.min(n,u.scrollHeight-p-m),t<m?(i+=t,v<l&&(i=m,l=v)):l=Math.min(l,u.clientWidth-v-m),d.style.height="".concat(n,"px"),d.style.width="".concat(l,"px"),d.style.left="".concat(i,"px"),d.style.top="".concat(r,"px"),d.style.display="block",getCheckboxRangeRows(k,c,f,o<m?-n:n));10<n&&t.length!==g.length&&(g=t,e.ctrlKey?t.forEach(function(e){k.handleSelectRow({row:e},-1===h.indexOf(e))}):(k.setAllCheckboxRow(!1),k.handleCheckedCheckboxRow(t,!0,!1)),R("change",e))},T=function(){clearTimeout(w),w=null},r=function r(i){T(),w=setTimeout(function(){var e,t,o,n,l;w&&(e=u.scrollLeft,t=u.scrollTop,o=u.clientHeight,n=u.scrollHeight,l=Math.ceil(50*y/b),C?t+o<n?(k.scrollTo(e,t+l),r(i),_(i)):T():t?(k.scrollTo(e,t-l),r(i),_(i)):T())},50)},_dom.default.addClass(t,"drag--range"),document.onmousemove=function(e){e.preventDefault(),e.stopPropagation();var t=e.clientY,o=_dom.default.getAbsolutePos(u).boundingTop;t<o?(C=!1,y=o-t,w||r(e)):t>o+u.clientHeight?(C=!0,y=t-o-u.clientHeight,w||r(e)):w&&T(),_(e)},document.onmouseup=function(e){T(),_dom.default.removeClass(t,"drag--range"),d.removeAttribute("style"),document.onmousemove=n,document.onmouseup=l,R("end",e)},R("start",e))}}};exports.default=_default;