vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
1 lines • 14.6 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")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_utils=_interopRequireWildcard(require("../../tools/utils")),_util=require("../../table/src/util"),_dom=_interopRequireWildcard(require("../../tools/dom")),_log=require("../../tools/log");function _getRequireWildcardCache(e){var t,r;return"function"!=typeof WeakMap?null:(t=new WeakMap,r=new WeakMap,(_getRequireWildcardCache=function(e){return e?r: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 r,i,n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&((i=o?Object.getOwnPropertyDescriptor(e,r):null)&&(i.get||i.set)?Object.defineProperty(n,r,i):n[r]=e[r]);return n.default=e,t&&t.set(e,n),n}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function ownKeys(t,e){var r,i=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,r)),i}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"===_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!==_typeof(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!==_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}function insertTreeRow(l,e,t){var a=l.tableFullTreeData,s=l.afterFullData,u=l.fullDataRowIdData,c=l.fullAllDataRowIdData,r=l.treeOpts,d=r.rowField,f=r.parentField,h=r.children,p=r.mapChildren,m=t?"push":"unshift";e.forEach(function(e){var t,r,i=e[f],n=(0,_util.getRowid)(l,e),o=i?_xeUtils.default.findTree(a,function(e){return i===e[d]},{children:p}):null;o?(o=o.item,t=(t=c[(0,_util.getRowid)(l,o)])?t.level:0,r=o[h],(r=_xeUtils.default.isArray(r)?r:o[h]=[])[m](e),o={row:e,rowid:n,seq:-1,index:-1,_index:-1,$index:-1,items:r,parent:parent,level:t+1},u[n]=o,c[n]=o):("development"===process.env.NODE_ENV&&i&&(0,_log.warnLog)("vxe.error.unableInsert"),s[m](e),a[m](e),r={row:e,rowid:n,seq:-1,index:-1,_index:-1,$index:-1,items:a,parent:null,level:0},u[n]=r,c[n]=r)})}var _default={methods:{_insert:function(e){return this.insertAt(e)},_insertAt:function(e,t){var i=this,r=this.tableFullTreeData,n=this.mergeList,o=this.afterFullData,l=this.editStore,a=this.tableFullData,s=this.treeConfig,u=this.fullDataRowIdData,c=this.fullAllDataRowIdData,d=this.treeOpts,f=d.transform,h=d.rowField,p=d.mapChildren,m=(_xeUtils.default.isArray(e)||(e=[e]),this.defineField(e.map(function(e){return Object.assign({},e)})));if(t)if(-1===t)s&&f?insertTreeRow(this,m,!0):(o.push.apply(o,_toConsumableArray(m)),a.push.apply(a,_toConsumableArray(m)),n.forEach(function(e){var t=e.row,r=e.rowspan;t+r>o.length&&(e.rowspan=r+m.length)}));else if(s&&f){var _,w,v,g=_xeUtils.default.findTree(r,function(e){return t[h]===e[h]},{children:p});g?(_=g.parent,w=g.items,e=c[(0,_util.getRowid)(this,_)],v=e?e.level:0,m.forEach(function(e,t){var r=(0,_util.getRowid)(i,e),t=("development"===process.env.NODE_ENV&&e[d.parentField]&&_&&e[d.parentField]!==_[h]&&(0,_log.errLog)("vxe.error.errProp",["".concat(d.parentField,"=").concat(e[d.parentField]),"".concat(d.parentField,"=").concat(_[h])]),_&&(e[d.parentField]=_[h]),w.splice(g.index+t,0,e),{row:e,rowid:r,seq:-1,index:-1,_index:-1,$index:-1,items:w,parent:_,level:v+1});u[r]=t,c[r]=t})):("development"===process.env.NODE_ENV&&(0,_log.warnLog)("vxe.error.unableInsert"),insertTreeRow(this,m,!0))}else{if(s)throw new Error((0,_log.getLog)("vxe.error.noTree",["insert"]));var y=-1;if(_xeUtils.default.isNumber(t)?t<o.length&&(y=t):y=this.findRowIndexOf(o,t),-1===y)throw new Error((0,_log.errLog)("vxe.error.unableInsert"));o.splice.apply(o,[y,0].concat(_toConsumableArray(m))),a.splice.apply(a,[this.findRowIndexOf(a,t),0].concat(_toConsumableArray(m))),n.forEach(function(e){var t=e.row,r=e.rowspan;y<t?e.row=t+m.length:y<t+r&&(e.rowspan=r+m.length)})}else s&&f?insertTreeRow(this,m,!1):(o.unshift.apply(o,_toConsumableArray(m)),a.unshift.apply(a,_toConsumableArray(m)),n.forEach(function(e){var t=e.row;0<t&&(e.row=t+m.length)}));var r=l.insertList,b=l.insertMaps;return m.forEach(function(e){var t=(0,_util.getRowid)(i,e);b[t]=e}),r.unshift.apply(r,_toConsumableArray(m)),this.cacheRowMap(),this.updateScrollYStatus(),this.handleTableData(s&&f),s&&f||this.updateAfterDataIndex(),this.updateFooter(),this.checkSelectionStatus(),this.scrollYLoad&&this.updateScrollYSpace(),this.$nextTick().then(function(){return i.updateCellAreas(),i.recalculate()}).then(function(){return{row:m.length?m[m.length-1]:null,rows:m}})},_remove:function(e){var n=this,o=this.afterFullData,r=this.tableFullData,i=this.tableFullTreeData,t=this.treeConfig,l=this.mergeList,a=this.editStore,s=this.checkboxOpts,u=this.selection,c=this.isInsertByRow,d=this.treeOpts,f=d.transform,h=a.actived,p=a.removeList,m=a.insertList,_=a.insertMaps,a=s.checkField,w=[];return e?_xeUtils.default.isArray(e)||(e=[e]):e=r,e.forEach(function(e){c(e)||p.push(e)}),a||e.forEach(function(e){e=n.findRowIndexOf(u,e);-1<e&&u.splice(e,1)}),r===e?(e=w=r.slice(0),this.tableFullData=[],this.afterFullData=[],this.clearMergeCells()):t&&f?e.forEach(function(e){var t=(0,_util.getRowid)(n,e),r=_xeUtils.default.findTree(i,function(e){return t===(0,_util.getRowid)(n,e)},d),r=(r&&(r=r.items.splice(r.index,1),w.push(r[0])),n.findRowIndexOf(o,e));-1<r&&o.splice(r,1)}):e.forEach(function(e){var t=n.findRowIndexOf(r,e),i=(-1<t&&(t=r.splice(t,1),w.push(t[0])),n.findRowIndexOf(o,e));-1<i&&(l.forEach(function(e){var t=e.row,r=e.rowspan;i<t?e.row=t-1:i<t+r&&(e.rowspan=r-1)}),o.splice(i,1))}),h.row&&-1<this.findRowIndexOf(e,h.row)&&this.clearActived(),e.forEach(function(e){var t=(0,_util.getRowid)(n,e),e=n.findRowIndexOf(m,e);-1<e&&m.splice(e,1),delete _[t]}),this.handleTableData(t&&f),t&&f||this.updateAfterDataIndex(),this.updateFooter(),this.cacheRowMap(),this.checkSelectionStatus(),this.scrollYLoad&&this.updateScrollYSpace(),this.$nextTick().then(function(){return n.updateCellAreas(),n.recalculate()}).then(function(){return{row:w.length?w[w.length-1]:null,rows:w}})},_removeCheckboxRow:function(){var t=this;return this.remove(this.getCheckboxRecords()).then(function(e){return t.clearCheckboxRow(),e})},_removeRadioRow:function(){var t=this,e=this.getRadioRecord();return this.remove(e||[]).then(function(e){return t.clearRadioRow(),e})},_removeCurrentRow:function(){var t=this,e=this.getCurrentRecord();return this.remove(e||[]).then(function(e){return t.clearCurrentRow(),e})},_getRecordset:function(){return{insertRecords:this.getInsertRecords(),removeRecords:this.getRemoveRecords(),updateRecords:this.getUpdateRecords()}},_getInsertRecords:function(){var r=this,i=this.fullAllDataRowIdData,e=this.editStore.insertList,n=[];return e.forEach(function(e){var t=(0,_util.getRowid)(r,e);i[t]&&n.push(e)}),n},_getRemoveRecords:function(){return this.editStore.removeList},_getUpdateRecords:function(){var e=this.keepSource,t=this.tableFullData,r=this.isUpdateByRow,i=this.treeConfig,n=this.treeOpts,o=this.editStore;return e?(o=(e=o.actived).row,e=e.column,(o||e)&&this._syncActivedCell(),i?_xeUtils.default.filterTree(t,function(e){return r(e)},n):t.filter(function(e){return r(e)})):[]},handleActived:function(e,t){var r=this,i=this.editStore,n=this.editOpts,o=this.tableColumn,l=this.editConfig,a=this.mouseConfig,s=n.mode,i=i.actived,u=e.row,c=e.column,d=c.editRender,f=e.cell=e.cell||this.getCell(u,c),n=n.beforeEditMethod||n.activeMethod;return(0,_utils.isEnableConf)(l)&&(0,_utils.isEnableConf)(d)&&f&&(i.row!==u||"cell"===s&&i.column!==c?(l="edit-disabled",n&&!n(_objectSpread(_objectSpread({},e),{},{$table:this}))||(a&&(this.clearSelected(t),this.clearCellAreas(t),this.clearCopyCellArea(t)),this.closeTooltip(),i.column&&this.clearActived(t),l="edit-actived",c.renderHeight=f.offsetHeight,i.args=e,i.row=u,i.column=c,"row"===s?o.forEach(function(e){return r._getColumnModel(u,e)}):this._getColumnModel(u,c),this.$nextTick(function(){r.handleFocus(e,t)})),this.emitEvent(l,{row:u,rowIndex:this.getRowIndex(u),$rowIndex:this.getVMRowIndex(u),column:c,columnIndex:this.getColumnIndex(c),$columnIndex:this.getVMColumnIndex(c)},t)):(d=i.column,a&&(this.clearSelected(t),this.clearCellAreas(t),this.clearCopyCellArea(t)),d!==c&&((n=d.model).update&&_utils.default.setCellValue(u,d,n.value),this.clearValidate()),c.renderHeight=f.offsetHeight,i.args=e,i.column=c,setTimeout(function(){r.handleFocus(e,t)})),this.focus()),this.$nextTick()},_getColumnModel:function(e,t){var r=t.model;t.editRender&&(r.value=_utils.default.getCellValue(e,t),r.update=!1)},_setColumnModel:function(e,t){var r=t.model;t.editRender&&r.update&&(_utils.default.setCellValue(e,t,r.value),r.update=!1,r.value=null)},_syncActivedCell:function(){var t=this,e=this.tableColumn,r=this.editStore,i=this.editOpts,r=r.actived,n=r.row,r=r.column;(n||r)&&("row"===i.mode?e.forEach(function(e){return t._setColumnModel(n,e)}):this._setColumnModel(n,r))},_clearActived:function(e){return this.clearEdit(e)},_clearEdit:function(e){var t=this.editStore.actived,r=t.row,i=t.column;return(r||i)&&(this._syncActivedCell(),t.args=null,t.row=null,t.column=null,this.updateFooter(),this.emitEvent("edit-closed",{row:r,rowIndex:this.getRowIndex(r),$rowIndex:this.getVMRowIndex(r),column:i,columnIndex:this.getColumnIndex(i),$columnIndex:this.getVMColumnIndex(i)},e)),_vXETable.default._valid?this.clearValidate():this.$nextTick()},_getActiveRecord:function(){return this.getEditRecord()},_getEditRecord:function(){var e=this.$el,t=this.editStore,r=this.afterFullData,t=t.actived,i=t.args,t=t.row;return i&&-1<this.findRowIndexOf(r,t)&&e.querySelectorAll(".vxe-body--column.col--actived").length?Object.assign({},i):null},_isActiveByRow:function(e){return this.isEditByRow(e)},_isEditByRow:function(e){return this.editStore.actived.row===e},handleFocus:function(e){var t,r,i,n=e.row,o=e.column,l=e.cell,a=o.editRender;(0,_utils.isEnableConf)(a)&&(i=_vXETable.default.renderer.get(a.name),t=a.autofocus,a=a.autoselect,!t&&i&&(t=i.autofocus),!a&&i&&(a=i.autoselect),_xeUtils.default.isFunction(t)?r=t.call(this,e):t&&(r=l.querySelector(t))&&r.focus(),r?a?r.select():_dom.browse.msie&&((i=r.createTextRange()).collapse(!1),i.select()):this.scrollToRow(n,o))},_setActiveRow:function(e){return this.setEditRow(e)},_setEditRow:function(e){return this.setEditCell(e,_xeUtils.default.find(this.visibleColumn,function(e){return(0,_utils.isEnableConf)(e.editRender)}))},_setActiveCell:function(e){return this.setEditCell(e)},_setEditCell:function(t,e){var r=this,i=this.editConfig,n=_xeUtils.default.isString(e)?this.getColumnByField(e):e;return t&&n&&(0,_utils.isEnableConf)(i)&&(0,_utils.isEnableConf)(n.editRender)?this.scrollToRow(t,!0).then(function(){var e=r.getCell(t,n);e&&(r.handleActived({row:t,rowIndex:r.getRowIndex(t),column:n,columnIndex:r.getColumnIndex(n),cell:e,$table:r}),r.lastCallTime=Date.now())}):this.$nextTick()},_setSelectCell:function(e,t){var r=this.tableData,i=this.editOpts,n=this.visibleColumn,t=_xeUtils.default.isString(t)?this.getColumnByField(t):t;return e&&t&&"manual"!==i.trigger&&-1<(i=this.findRowIndexOf(r,e))&&(r=this.getCell(e,t),e={row:e,rowIndex:i,column:t,columnIndex:n.indexOf(t),cell:r},this.handleSelected(e,{})),this.$nextTick()},handleSelected:function(e,t){var r=this,i=this.mouseConfig,n=this.mouseOpts,o=this.editOpts,l=this.editStore,a=l.actived,l=l.selected,s=e.row,u=e.column,i=i&&n.selected;return!i||l.row===s&&l.column===u||(a.row!==s||"cell"===o.mode&&a.column!==u)&&(r.clearActived(t),r.clearSelected(t),r.clearCellAreas(t),r.clearCopyCellArea(t),l.args=e,l.row=s,l.column=u,i&&r.addColSdCls(),r.focus(),t)&&r.emitEvent("cell-selected",e,t),r.$nextTick()},_getSelectedCell:function(){var e=this.editStore.selected,t=e.args,e=e.column;return t&&e?Object.assign({},t):null},_clearSelected:function(){var e=this.editStore.selected;return e.row=null,e.column=null,this.reColTitleSdCls(),this.reColSdCls(),this.$nextTick()},reColTitleSdCls:function(){var e=this.elemStore["main-header-list"];e&&_xeUtils.default.arrayEach(e.querySelectorAll(".col--title-selected"),function(e){return _dom.default.removeClass(e,"col--title-selected")})},reColSdCls:function(){var e=this.$el.querySelector(".col--selected");e&&_dom.default.removeClass(e,"col--selected")},addColSdCls:function(){var e=this.editStore.selected,t=e.row,e=e.column;this.reColSdCls(),t&&e&&(t=this.getCell(t,e))&&_dom.default.addClass(t,"col--selected")}}};exports.default=_default;