vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 12.8 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_vXETable=require("../../v-x-e-table"),_utils=require("../../tools/utils"),_util=require("../../table/src/util"),_dom=require("../../tools/dom"),_log=require("../../tools/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,l=1,r=arguments.length;l<r;l++)for(var n in t=arguments[l])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},__spreadArray=function(e,t,l){if(l||2===arguments.length)for(var r,n=0,o=t.length;n<o;n++)!r&&n in t||((r=r||Array.prototype.slice.call(t,0,n))[n]=t[n]);return e.concat(r||Array.prototype.slice.call(t))},tableEditMethodKeys=["insert","insertAt","insertNextAt","remove","removeCheckboxRow","removeRadioRow","removeCurrentRow","getRecordset","getInsertRecords","getRemoveRecords","getUpdateRecords","getEditRecord","getActiveRecord","getSelectedCell","clearEdit","clearActived","clearSelected","isEditByRow","isActiveByRow","setEditRow","setActiveRow","setEditCell","setActiveCell","setSelectCell"],editHook={setupTable:function(E){function f(e,t){var l=t.model;t.editRender&&(l.value=(0,_util.getCellValue)(e,t),l.update=!1)}function n(e,t){var l=t.model;t.editRender&&l.update&&((0,_util.setCellValue)(e,t,l.value),l.update=!1,l.value=null)}function l(){var e=o.value;e&&(e=e.querySelector(".col--selected"))&&(0,_dom.removeClass)(e,"col--selected")}var I=E.props,b=E.reactData,y=E.internalData,o=E.getRefMaps().refElem,e=E.getComputeMaps(),c=e.computeMouseOpts,v=e.computeEditOpts,x=e.computeCheckboxOpts,A=e.computeTreeOpts,h={},p={};function i(){var e=b.editStore,t=b.tableColumn,l=v.value,e=e.actived,r=e.row,e=e.column;(r||e)&&("row"===l.mode?t.forEach(function(e){return n(r,e)}):n(r,e))}function S(e,t){var a=y.tableFullTreeData,u=y.afterFullData,c=y.fullDataRowIdData,d=y.fullAllDataRowIdData,l=A.value,s=l.rowField,f=l.parentField,v=l.mapChildrenField,p=l.children||l.childrenField,g=t?"push":"unshift";e.forEach(function(e){var t,l,r,n=e[f],o=(0,_util.getRowid)(E,e),i=n?_xeUtils.default.findTree(a,function(e){return n===e[s]},{children:v}):null;r=i?(i=i.item,t=(t=d[(0,_util.getRowid)(E,i)])?t.level:0,l=i[p],r=i[v],_xeUtils.default.isArray(l)||(l=i[p]=[]),_xeUtils.default.isArray(r)||(r=i[p]=[]),l[g](e),r[g](e),{row:e,rowid:o,seq:-1,index:-1,_index:-1,$index:-1,items:l,parent:i,level:t+1}):("development"===process.env.NODE_ENV&&n&&(0,_log.warnLog)("vxe.error.unableInsert"),u[g](e),a[g](e),{row:e,rowid:o,seq:-1,index:-1,_index:-1,$index:-1,items:a,parent:null,level:0}),c[o]=r,d[o]=r})}function r(e,t,r){var l=I.treeConfig,n=b.mergeList,o=b.editStore,i=y.tableFullTreeData,a=y.afterFullData,u=y.tableFullData,c=y.fullDataRowIdData,d=y.fullAllDataRowIdData,s=A.value,f=s.transform,v=s.rowField,p=s.mapChildrenField,g=s.children||s.childrenField,w=(_xeUtils.default.isArray(e)||(e=[e]),(0,_vue.reactive)(E.defineField(e.map(function(e){var t;return Object.assign(l&&f?((t={})[p]=[],t[g]=[],t):{},e)}))));if(_xeUtils.default.eqNull(t))l&&f?S(w,!1):(a.unshift.apply(a,w),u.unshift.apply(u,w),n.forEach(function(e){var t=e.row;0<t&&(e.row=t+w.length)}));else if(-1===t)l&&f?S(w,!0):(a.push.apply(a,w),u.push.apply(u,w),n.forEach(function(e){var t=e.row,l=e.rowspan;t+l>a.length&&(e.rowspan=l+w.length)}));else if(l&&f){var x,h,m,_=_xeUtils.default.findTree(i,function(e){return t[v]===e[v]},{children:p});_?(x=_.parent,h=x?x[p]:i,e=d[(0,_util.getRowid)(E,x)],m=e?e.level:0,w.forEach(function(e,t){var l=(0,_util.getRowid)(E,e),t=("development"===process.env.NODE_ENV&&e[s.parentField]&&x&&e[s.parentField]!==x[v]&&(0,_log.errLog)("vxe.error.errProp",["".concat(s.parentField,"=").concat(e[s.parentField]),"".concat(s.parentField,"=").concat(x[v])]),x&&(e[s.parentField]=x[v]),_.index+t),t=(r&&(t+=1),h.splice(t,0,e),{row:e,rowid:l,seq:-1,index:-1,_index:-1,$index:-1,items:h,parent:x,level:m+1});c[l]=t,d[l]=t}),x&&(e=_xeUtils.default.findTree(i,function(e){return t[v]===e[v]},{children:g}))&&(i=e.items,e=e.index,r&&(e+=1),i.splice.apply(i,__spreadArray([e,0],w,!1)))):("development"===process.env.NODE_ENV&&(0,_log.warnLog)("vxe.error.unableInsert"),S(w,!0))}else{if(l)throw new Error((0,_log.getLog)("vxe.error.noTree",["insert"]));var R=-1;if(_xeUtils.default.isNumber(t)?t<a.length&&(R=t):R=E.findRowIndexOf(a,t),-1===(R=r?Math.min(a.length,R+1):R))throw new Error((0,_log.errLog)("vxe.error.unableInsert"));a.splice.apply(a,__spreadArray([R,0],w,!1)),u.splice.apply(u,__spreadArray([E.findRowIndexOf(u,t),0],w,!1)),n.forEach(function(e){var t=e.row,l=e.rowspan;R<t?e.row=t+w.length:R<t+l&&(e.rowspan=l+w.length)})}var C=o.insertMaps;return w.forEach(function(e){var t=(0,_util.getRowid)(E,e);C[t]=e}),E.cacheRowMap(),E.updateScrollYStatus(),E.handleTableData(l&&f),l&&f||E.updateAfterDataIndex(),E.updateFooter(),E.checkSelectionStatus(),b.scrollYLoad&&E.updateScrollYSpace(),(0,_vue.nextTick)().then(function(){return E.updateCellAreas(),E.recalculate()}).then(function(){return{row:w.length?w[w.length-1]:null,rows:w}})}p={handleActived:function(e,t){var l=I.editConfig,r=I.mouseConfig,n=b.editStore,o=b.tableColumn,i=v.value,a=i.mode,n=n.actived,u=e.row,c=e.column,d=c.editRender,s=e.cell||E.getCell(u,c),i=i.beforeEditMethod||i.activeMethod;return e.cell=s,(0,_utils.isEnableConf)(l)&&(0,_utils.isEnableConf)(d)&&!E.hasPendingByRow(u)&&s&&(n.row!==u||"cell"===a&&n.column!==c?(l="edit-disabled",i&&!i(__assign(__assign({},e),{$table:E,$grid:E.xegrid}))||(r&&(h.clearSelected(),E.clearCellAreas)&&(E.clearCellAreas(),E.clearCopyCellArea()),E.closeTooltip(),n.column&&h.clearEdit(t),l="edit-activated",c.renderHeight=s.offsetHeight,n.args=e,n.row=u,n.column=c,"row"===a?o.forEach(function(e){return f(u,e)}):f(u,c),(0,_vue.nextTick)(function(){p.handleFocus(e,t)})),E.dispatchEvent(l,{row:u,rowIndex:E.getRowIndex(u),$rowIndex:E.getVMRowIndex(u),column:c,columnIndex:E.getColumnIndex(c),$columnIndex:E.getVMColumnIndex(c)},t),"edit-activated"===l&&E.dispatchEvent("edit-actived",{row:u,rowIndex:E.getRowIndex(u),$rowIndex:E.getVMRowIndex(u),column:c,columnIndex:E.getColumnIndex(c),$columnIndex:E.getVMColumnIndex(c)},t)):(d=n.column,r&&(h.clearSelected(),E.clearCellAreas)&&(E.clearCellAreas(),E.clearCopyCellArea()),d!==c&&((i=d.model).update&&(0,_util.setCellValue)(u,d,i.value),E.clearValidate)&&E.clearValidate(u,c),c.renderHeight=s.offsetHeight,n.args=e,n.column=c,setTimeout(function(){p.handleFocus(e,t)})),E.focus()),(0,_vue.nextTick)()},handleFocus:function(e){var t,l,r,n=e.row,o=e.column,i=e.cell,a=o.editRender;(0,_utils.isEnableConf)(a)&&(r=_vXETable.renderer.get(a.name),t=a.autofocus,a=a.autoselect,l=void 0,!t&&r&&(t=r.autofocus),!a&&r&&(a=r.autoselect),_xeUtils.default.isFunction(t)?l=t.call(this,e):t&&(l=i.querySelector(t))&&l.focus(),l?a?l.select():_dom.browse.msie&&((r=l.createTextRange()).collapse(!1),r.select()):E.scrollToRow(n,o))},handleSelected:function(e,t){var l=I.mouseConfig,r=b.editStore,n=c.value,o=v.value,i=r.actived,r=r.selected,a=e.row,u=e.column,l=l&&n.selected;return!l||r.row===a&&r.column===u||(i.row!==a||"cell"===o.mode&&i.column!==u)&&(h.clearEdit(t),h.clearSelected(),E.clearCellAreas&&(E.clearCellAreas(),E.clearCopyCellArea()),r.args=e,r.row=a,r.column=u,l&&p.addCellSelectedClass(),E.focus(),t)&&E.dispatchEvent("cell-selected",e,t),(0,_vue.nextTick)()},addCellSelectedClass:function(){var e=b.editStore.selected,t=e.row,e=e.column;l(),t&&e&&(t=E.getCell(t,e))&&(0,_dom.addClass)(t,"col--selected")}};return __assign(__assign({},h={insert:function(e){return r(e,null)},insertAt:function(e,t){return r(e,t)},insertNextAt:function(e,t){return r(e,t,!0)},remove:function(e){var t,l=I.treeConfig,n=b.mergeList,r=b.editStore,o=b.selectCheckboxMaps,i=y.tableFullTreeData,a=y.afterFullData,u=y.tableFullData,c=x.value,d=A.value,s=d.transform,f=d.mapChildrenField,v=d.children||d.childrenField,d=r.actived,p=r.removeMaps,g=r.insertMaps,r=c.checkField,w=[];return e?_xeUtils.default.isArray(e)||(e=[e]):e=u,e.forEach(function(e){var t;E.isInsertByRow(e)||(t=(0,_util.getRowid)(E,e),p[t]=e)}),r||(t=__assign({},o),e.forEach(function(e){e=(0,_util.getRowid)(E,e);t[e]&&delete t[e]}),b.selectCheckboxMaps=t),u===e?(e=w=u.slice(0),y.tableFullData=[],y.afterFullData=[],E.clearMergeCells()):l&&s?e.forEach(function(e){var t=(0,_util.getRowid)(E,e),l=_xeUtils.default.findTree(i,function(e){return t===(0,_util.getRowid)(E,e)},{children:f}),l=(l&&(l=l.items.splice(l.index,1),w.push(l[0])),_xeUtils.default.findTree(i,function(e){return t===(0,_util.getRowid)(E,e)},{children:v})),l=(l&&l.items.splice(l.index,1),E.findRowIndexOf(a,e));-1<l&&a.splice(l,1)}):e.forEach(function(e){var t=E.findRowIndexOf(u,e),r=(-1<t&&(t=u.splice(t,1),w.push(t[0])),E.findRowIndexOf(a,e));-1<r&&(n.forEach(function(e){var t=e.row,l=e.rowspan;r<t?e.row=t-1:r<t+l&&(e.rowspan=l-1)}),a.splice(r,1))}),d.row&&-1<E.findRowIndexOf(e,d.row)&&h.clearEdit(),e.forEach(function(e){e=(0,_util.getRowid)(E,e);g[e]&&delete g[e]}),E.updateFooter(),E.cacheRowMap(),E.handleTableData(l&&s),l&&s||E.updateAfterDataIndex(),E.checkSelectionStatus(),b.scrollYLoad&&E.updateScrollYSpace(),(0,_vue.nextTick)().then(function(){return E.updateCellAreas(),E.recalculate()}).then(function(){return{row:w.length?w[w.length-1]:null,rows:w}})},removeCheckboxRow:function(){return h.remove(E.getCheckboxRecords()).then(function(e){return E.clearCheckboxRow(),e})},removeRadioRow:function(){var e=E.getRadioRecord();return h.remove(e||[]).then(function(e){return E.clearRadioRow(),e})},removeCurrentRow:function(){var e=E.getCurrentRecord();return h.remove(e||[]).then(function(e){return E.clearCurrentRow(),e})},getRecordset:function(){return{insertRecords:h.getInsertRecords(),removeRecords:h.getRemoveRecords(),updateRecords:h.getUpdateRecords(),pendingRecords:E.getPendingRecords()}},getInsertRecords:function(){var e=b.editStore,l=y.fullAllDataRowIdData,e=e.insertMaps,r=[];return _xeUtils.default.each(e,function(e,t){l[t]&&r.push(e)}),r},getRemoveRecords:function(){var e=b.editStore.removeMaps,t=[];return _xeUtils.default.each(e,function(e){t.push(e)}),t},getUpdateRecords:function(){var e=I.keepSource,t=I.treeConfig,l=y.tableFullData,r=A.value;return e?(i(),t?_xeUtils.default.filterTree(l,function(e){return E.isUpdateByRow(e)},r):l.filter(function(e){return E.isUpdateByRow(e)})):[]},getActiveRecord:function(){return this.getEditRecord()},getEditRecord:function(){var e=b.editStore,t=y.afterFullData,l=o.value,e=e.actived,r=e.args,e=e.row;return r&&-1<E.findRowIndexOf(t,e)&&l.querySelectorAll(".vxe-body--column.col--active").length?Object.assign({},r):null},getSelectedCell:function(){var e=b.editStore.selected,t=e.args,e=e.column;return t&&e?Object.assign({},t):null},clearActived:function(e){return this.clearEdit(e)},clearEdit:function(e){var t=b.editStore.actived,l=t.row,r=t.column;return(l||r)&&(i(),t.args=null,t.row=null,t.column=null,E.updateFooter(),E.dispatchEvent("edit-closed",{row:l,rowIndex:E.getRowIndex(l),$rowIndex:E.getVMRowIndex(l),column:r,columnIndex:E.getColumnIndex(r),$columnIndex:E.getVMColumnIndex(r)},e||null)),"obsolete"===_conf.default.cellVaildMode&&E.clearValidate?E.clearValidate():(0,_vue.nextTick)()},clearSelected:function(){var e=b.editStore.selected;return e.row=null,e.column=null,l(),(0,_vue.nextTick)()},isActiveByRow:function(e){return this.isEditByRow(e)},isEditByRow:function(e){return b.editStore.actived.row===e},setActiveRow:function(e){return h.setEditRow(e)},setEditRow:function(e,t){var l=y.visibleColumn,l=_xeUtils.default.find(l,function(e){return(0,_utils.isEnableConf)(e.editRender)});return t&&(l=_xeUtils.default.isString(t)?E.getColumnByField(t):t),E.setEditCell(e,l)},setActiveCell:function(e,t){return h.setEditCell(e,t)},setEditCell:function(t,e){var l=I.editConfig,r=_xeUtils.default.isString(e)?E.getColumnByField(e):e;return t&&r&&(0,_utils.isEnableConf)(l)&&(0,_utils.isEnableConf)(r.editRender)?E.scrollToRow(t,r).then(function(){var e=E.getCell(t,r);return e&&(p.handleActived({row:t,rowIndex:E.getRowIndex(t),column:r,columnIndex:E.getColumnIndex(r),cell:e,$table:E}),y._lastCallTime=Date.now()),(0,_vue.nextTick)()}):(0,_vue.nextTick)()},setSelectCell:function(e,t){var l=b.tableData,r=v.value,t=_xeUtils.default.isString(t)?E.getColumnByField(t):t;return e&&t&&"manual"!==r.trigger&&-1<(r=E.findRowIndexOf(l,e))&&t&&(l=E.getCell(e,t),e={row:e,rowIndex:r,column:t,columnIndex:E.getColumnIndex(t),cell:l},E.handleSelected(e,{})),(0,_vue.nextTick)()}}),p)},setupGrid:function(e){return e.extendTableMethods(tableEditMethodKeys)}},_default=editHook;exports.default=_default;