django-vue3-admin-web/node_modules/vxe-table/lib/table/module/edit/hook.min.js
2025-10-20 21:21:14 +08:00

1 line
14 KiB
JavaScript

var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_util=require("../../src/util"),_dom=require("../../../ui/src/dom"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getConfig,renderer,hooks,getI18n}=_ui.VxeUI,tableEditMethodKeys=["insert","insertAt","insertNextAt","insertChild","insertChildAt","insertChildNextAt","remove","removeCheckboxRow","removeRadioRow","removeCurrentRow","getRecordset","getInsertRecords","getRemoveRecords","getUpdateRecords","getEditRecord","getActiveRecord","getEditCell","getSelectedCell","clearEdit","clearActived","clearSelected","isEditByRow","isActiveByRow","setEditRow","setActiveRow","setEditCell","setActiveCell","setSelectCell"];hooks.add("tableEditModule",{setupTable(_){let{props:C,reactData:I,internalData:E}=_,t=_.getRefMaps().refElem,{computeMouseOpts:c,computeEditOpts:m,computeCheckboxOpts:R,computeTreeOpts:b,computeValidOpts:n}=_.getComputeMaps(),s=_xeUtils.default.browse(),p={},g={},A=(e,t)=>{var{model:l,editRender:r}=t;r&&(l.value=(0,_util.getCellValue)(e,t),l.update=!1)},a=(e,t)=>{var{model:l,editRender:r}=t;r&&l.update&&((0,_util.setCellValue)(e,t,l.value),l.update=!1,l.value=null)},l=()=>{var e=t.value;e&&(e=e.querySelector(".col--selected"))&&(0,_dom.removeClass)(e,"col--selected")},d=()=>{var{editStore:e,tableColumn:t}=I,l=m.value,e=e.actived;let{row:r,column:o}=e;(r||o)&&("row"===l.mode?t.forEach(e=>a(r,e)):a(r,o))},F=(e,t)=>{let{tableFullTreeData:i,afterFullData:n,fullDataRowIdData:d,fullAllDataRowIdData:u}=E;var l=b.value;let{rowField:s,parentField:c,mapChildrenField:g}=l,w=l.children||l.childrenField,v=t?"push":"unshift";e.forEach(l=>{let t=l[c];var r=(0,_util.getRowid)(_,l),o=t?_xeUtils.default.findTree(i,e=>t===e[s],{children:g}):null;if(o){var o=o.item,a=u[(0,_util.getRowid)(_,o)],a=a?a.level:0;let e=o[w],t=o[g];_xeUtils.default.isArray(e)||(e=o[w]=[]),_xeUtils.default.isArray(t)||(t=o[w]=[]),e[v](l),t[v](l);o={row:l,rowid:r,seq:-1,index:-1,_index:-1,$index:-1,treeIndex:-1,_tIndex:-1,items:e,parent:o,level:a+1,height:0,resizeHeight:0,oTop:0,expandHeight:0};d[r]=o,u[r]=o}else{t&&(0,_log.warnLog)("vxe.error.unableInsert"),n[v](l),i[v](l);a={row:l,rowid:r,seq:-1,index:-1,_index:-1,$index:-1,treeIndex:-1,_tIndex:-1,items:i,parent:null,level:0,height:0,resizeHeight:0,oTop:0,expandHeight:0};d[r]=a,u[r]=a}})},u=(t,l,n)=>{let o=C.treeConfig;var e=I.isRowGroupStatus;let{tableFullTreeData:d,afterFullData:a,mergeBodyList:i,tableFullData:u,fullDataRowIdData:s,fullAllDataRowIdData:c,insertRowMaps:r,removeRowMaps:g}=E;var w=b.value;let{transform:v,parentField:x,rowField:f,mapChildrenField:h}=w,m=w.children||w.childrenField,R=(_xeUtils.default.isArray(t)||(t=[t]),(0,_vue.reactive)(_.defineField(t.map(e=>Object.assign(o&&v?{[h]:[],[m]:[]}:{},e))))),p=[];if(o&&v&&(p=_xeUtils.default.toArrayTree(R,{key:f,parentKey:x,children:m})),_xeUtils.default.eqNull(l))if(o&&v)F(R,!1);else if(e){if(o)throw new Error(getI18n("vxe.error.noTree",["insert"]));(0,_log.warnLog)(getI18n("vxe.error.noGroup",["remove"]))}else R.forEach(e=>{var t=(0,_util.getRowid)(_,e),l={row:e,rowid:t,seq:-1,index:-1,_index:-1,$index:-1,treeIndex:-1,_tIndex:-1,items:a,parent:null,level:0,height:0,resizeHeight:0,oTop:0,expandHeight:0};s[t]=l,c[t]=l,a.unshift(e),u.unshift(e)}),i.forEach(e=>{var t=e.row;0<=t&&(e.row=t+R.length)});else if(-1===l)if(o&&v)F(R,!0);else if(e){if(o)throw new Error(getI18n("vxe.error.noTree",["insert"]));(0,_log.warnLog)(getI18n("vxe.error.noGroup",["remove"]))}else R.forEach(e=>{var t=(0,_util.getRowid)(_,e),l={row:e,rowid:t,seq:-1,index:-1,_index:-1,treeIndex:-1,_tIndex:-1,$index:-1,items:a,parent:null,level:0,height:0,resizeHeight:0,oTop:0,expandHeight:0};s[t]=l,c[t]=l,a.push(e),u.push(e)});else if(o&&v){let i=_xeUtils.default.findTree(d,e=>l[f]===e[f],{children:h});if(i){let r=i.parent,o=r?r[h]:d;w=c[(0,_util.getRowid)(_,r)];let a=w?w.level:0;if(p.forEach((e,t)=>{r?e[x]!==r[f]&&(e[x]=r[f],(0,_log.errLog)("vxe.error.errProp",[x+"="+e[x],x+"="+r[f]])):null!==e[x]&&(e[x]=null,_log.errLog)("vxe.error.errProp",[x+"="+e[x],"null"]);let l=i.index+t;n&&(l+=1),o.splice(l,0,e)}),_xeUtils.default.eachTree(p,e=>{var t=(0,_util.getRowid)(_,e),l={row:e,rowid:t,seq:-1,index:-1,_index:-1,$index:-1,treeIndex:-1,_tIndex:-1,items:o,parent:r,level:a+1,height:0,resizeHeight:0,oTop:0,expandHeight:0};e[m]&&(e[h]=e[m]),s[t]=l,c[t]=l},{children:m}),r){t=_xeUtils.default.findTree(d,e=>l[f]===e[f],{children:m});if(t){w=t.items;let e=t.index;n&&(e+=1),w.splice(e,0,...p)}}}else(0,_log.warnLog)("vxe.error.unableInsert"),F(R,!0)}else if(e){if(o)throw new Error(getI18n("vxe.error.noTree",["insert"]));(0,_log.warnLog)(getI18n("vxe.error.noGroup",["remove"]))}else{if(o)throw new Error(getI18n("vxe.error.noTree",["insert"]));let r=-1;if(_xeUtils.default.isNumber(l)?l<a.length&&(r=l):r=_.findRowIndexOf(a,l),-1===(r=n?Math.min(a.length,r+1):r))throw new Error(getI18n("vxe.error.unableInsert"));a.splice(r,0,...R);t=_.findRowIndexOf(u,l);-1<t?u.splice(t+(n?1:0),0,...R):u.push(...R),i.forEach(e=>{var{row:t,rowspan:l}=e;t>=r?e.row=t+R.length:(n?t+l>=r:t+l>r)&&(e.rowspan=l+R.length)})}w=e=>{var t=(0,_util.getRowid)(_,e);g[t]?(delete g[t],r[t]&&delete r[t]):r[t]=e};return o&&v?_xeUtils.default.eachTree(p,w,{children:h}):R.forEach(w),I.removeRowFlag++,I.insertRowFlag++,_.cacheRowMap(!1),_.updateScrollYStatus(),_.handleTableData(o&&v),o&&v||_.updateAfterDataIndex(),_.updateFooter(),_.handleUpdateBodyMerge(),_.checkSelectionStatus(),I.scrollYLoad&&_.updateScrollYSpace(),(0,_vue.nextTick)().then(()=>(_.updateCellAreas(),_.recalculate(!0))).then(()=>({row:R.length?R[R.length-1]:null,rows:R}))},r=(e,t,l,r)=>{var o=C.treeConfig;let{transform:a,rowField:i,parentField:n}=b.value;return o&&a?(_xeUtils.default.isArray(e)||(e=[e]),u(e.map(e=>Object.assign({},e,{[n]:t[i]})),l,r)):((0,_log.errLog)("vxe.error.errProp",["tree-config.transform=false","tree-config.transform=true"]),Promise.resolve({row:null,rows:[]}))},S=(e,t)=>{var l=I.editStore,{actived:l,focused:r}=l,{row:o,column:a}=l,i=n.value;if(o||a){if(t&&(0,_util.getRowid)(_,t)!==(0,_util.getRowid)(_,o))return(0,_vue.nextTick)();d(),l.args=null,l.row=null,l.column=null,_.updateFooter(),_.dispatchEvent("edit-closed",{row:o,rowIndex:_.getRowIndex(o),$rowIndex:_.getVMRowIndex(o),column:a,columnIndex:_.getColumnIndex(a),$columnIndex:_.getVMColumnIndex(a)},e||null)}return r.row=null,r.column=null,i.autoClear&&("full"!==i.msgMode||"obsolete"===getConfig().cellVaildMode)&&_.clearValidate?_.clearValidate():(0,_vue.nextTick)().then(()=>_.updateCellAreas())},i=(l,r,o,e)=>{let a=_.xeGrid,i=_.xeGantt;var{editConfig:t,mouseConfig:n}=C,{editStore:d,tableColumn:u}=I,s=m.value,c=s.mode,{actived:d,focused:g}=d;let{row:w,column:v}=l;var x=v.editRender,f=l.cell||_.getCellElement(w,v),h=s.beforeEditMethod||s.activeMethod;if((l.cell=f)&&(0,_utils.isEnableConf)(t)&&(0,_utils.isEnableConf)(x)&&!_.isPendingByRow(w)&&!_.isAggregateRecord(w)){if(d.row!==w||"cell"===c&&d.column!==v){let t="edit-disabled";if(!h||h(Object.assign(Object.assign({},l),{$table:_,$grid:a,$gantt:i}))){n&&(_.clearSelected(),_.clearCellAreas)&&(_.clearCellAreas(),_.clearCopyCellArea()),_.closeTooltip(),d.column&&S(r),t="edit-activated",v.renderHeight=f.offsetHeight,d.args=l,d.row=w,d.column=v,"row"===c?u.forEach(e=>A(w,e)):A(w,v);let e=s.afterEditMethod;(0,_vue.nextTick)(()=>{o&&_.handleFocus(l,r),e&&e(Object.assign(Object.assign({},l),{$table:_,$grid:a,$gantt:i}))})}_.dispatchEvent(t,{row:w,rowIndex:_.getRowIndex(w),$rowIndex:_.getVMRowIndex(w),column:v,columnIndex:_.getColumnIndex(v),$columnIndex:_.getVMColumnIndex(v)},r),"edit-activated"===t&&_.dispatchEvent("edit-actived",{row:w,rowIndex:_.getRowIndex(w),$rowIndex:_.getVMRowIndex(w),column:v,columnIndex:_.getColumnIndex(v),$columnIndex:_.getVMColumnIndex(v)},r)}else{t=d.column;n&&(_.clearSelected(),_.clearCellAreas)&&(_.clearCellAreas(),_.clearCopyCellArea()),t!==v&&(x=t.model,x.update&&(0,_util.setCellValue)(w,t,x.value),_.clearValidate)&&_.clearValidate(w,v),v.renderHeight=f.offsetHeight,d.args=l,d.column=v,e&&setTimeout(()=>{_.handleFocus(l,r)})}g.column=null,g.row=null,_.focus()}return(0,_vue.nextTick)()},w=(t,e,l)=>{var r=C.editConfig;let o=_xeUtils.default.isString(e)?_.getColumnByField(e):e;return t&&o&&(0,_utils.isEnableConf)(r)&&(0,_utils.isEnableConf)(o.editRender)&&!_.isAggregateRecord(t)?Promise.resolve(l?_.scrollToRow(t,o):null).then(()=>{var e=_.getCellElement(t,o);return e&&(i({row:t,rowIndex:_.getRowIndex(t),column:o,columnIndex:_.getColumnIndex(o),cell:e,$table:_},null,l,l),E._lastCallTime=Date.now()),(0,_vue.nextTick)()}):(0,_vue.nextTick)()};return p={insert(e){return u(e,null)},insertAt(e,t){return u(e,t)},insertNextAt(e,t){return u(e,t,!0)},insertChild(e,t){return r(e,t,null)},insertChildAt(e,t,l){return r(e,t,l)},insertChildNextAt(e,t,l){return r(e,t,l,!0)},remove(e){var t=C.treeConfig,{editStore:l,isRowGroupStatus:r}=I;let{tableFullTreeData:o,selectCheckboxMaps:a,afterFullData:i,mergeBodyList:n,tableFullData:d,pendingRowMaps:u,insertRowMaps:s,removeRowMaps:c}=E;var g=R.value,w=b.value;let{transform:v,mapChildrenField:x}=w,f=w.children||w.childrenField;w=l.actived,l=g.checkField;let h=[];return e?_xeUtils.default.isArray(e)||(e=[e]):e=d,e.forEach(e=>{var t;_.isInsertByRow(e)||(t=(0,_util.getRowid)(_,e),c[t]=e)}),l||(e.forEach(e=>{e=(0,_util.getRowid)(_,e);a[e]&&delete a[e]}),I.updateCheckboxFlag++),d===e?(e=h=d.slice(0),E.tableFullData=[],E.afterFullData=[],_.clearMergeCells()):t&&v?e.forEach(e=>{let t=(0,_util.getRowid)(_,e);var l=_xeUtils.default.findTree(o,e=>t===(0,_util.getRowid)(_,e),{children:x}),l=(l&&(l=l.items.splice(l.index,1),h.push(l[0])),_xeUtils.default.findTree(o,e=>t===(0,_util.getRowid)(_,e),{children:f})),l=(l&&l.items.splice(l.index,1),_.findRowIndexOf(i,e));-1<l&&i.splice(l,1)}):r?(0,_log.warnLog)(getI18n("vxe.error.noGroup",["remove"])):e.forEach(e=>{var t=_.findRowIndexOf(d,e);-1<t&&(t=d.splice(t,1),h.push(t[0]));let r=_.findRowIndexOf(i,e);-1<r&&(n.forEach(e=>{var{row:t,rowspan:l}=e;t>r?e.row=t-1:t+l>r&&(e.rowspan=l-1)}),i.splice(r,1))}),w.row&&-1<_.findRowIndexOf(e,w.row)&&p.clearEdit(),e.forEach(e=>{e=(0,_util.getRowid)(_,e);s[e]&&delete s[e],u[e]&&delete u[e]}),I.removeRowFlag++,I.insertRowFlag++,I.pendingRowFlag++,_.cacheRowMap(!1),_.handleTableData(t&&v),_.updateFooter(),_.handleUpdateBodyMerge(),t&&v||_.updateAfterDataIndex(),_.checkSelectionStatus(),I.scrollYLoad&&_.updateScrollYSpace(),(0,_vue.nextTick)().then(()=>(_.updateCellAreas(),_.recalculate(!0))).then(()=>({row:h.length?h[h.length-1]:null,rows:h}))},removeCheckboxRow(){return p.remove(_.getCheckboxRecords()).then(e=>(_.clearCheckboxRow(),e))},removeRadioRow(){var e=_.getRadioRecord();return p.remove(e||[]).then(e=>(_.clearRadioRow(),e))},removeCurrentRow(){var e=_.getCurrentRecord();return p.remove(e||[]).then(e=>(_.clearCurrentRow(),e))},getRecordset(){var e=p.getRemoveRecords(),t=_.getPendingRecords();let l=e.concat(t);var r=p.getUpdateRecords().filter(t=>!l.some(e=>_.eqRow(e,t)));return{insertRecords:p.getInsertRecords(),removeRecords:e,updateRecords:r,pendingRecords:t}},getInsertRecords(){let{fullAllDataRowIdData:l,insertRowMaps:e}=E,r=[];return _xeUtils.default.each(e,(e,t)=>{l[t]&&r.push(e)}),r},getRemoveRecords(){var e=E.removeRowMaps;let t=[];return _xeUtils.default.each(e,e=>{t.push(e)}),t},getUpdateRecords(){var{keepSource:e,treeConfig:t}=C,l=E.tableFullData,r=b.value;return e?(d(),t?_xeUtils.default.filterTree(l,e=>_.isUpdateByRow(e),r):l.filter(e=>_.isUpdateByRow(e))):[]},getActiveRecord(){(0,_log.warnLog)("vxe.error.delFunc",["getActiveRecord","getEditCell"]);var e=I.editStore,t=E.fullAllDataRowIdData,{args:e,row:l}=e.actived;return e&&l&&t[(0,_util.getRowid)(_,l)]?Object.assign({},e,{row:l}):null},getEditRecord(){(0,_log.warnLog)("vxe.error.delFunc",["getEditRecord","getEditCell"]);var e=I.editStore,t=E.fullAllDataRowIdData,{args:e,row:l}=e.actived;return e&&l&&t[(0,_util.getRowid)(_,l)]?Object.assign({},e,{row:l}):null},getEditCell(){var e=I.editStore,{row:e,column:t}=e.actived;return t&&e?{row:e,rowIndex:_.getRowIndex(e),column:t,columnIndex:_.getColumnIndex(t)}:null},getSelectedCell(){var e=I.editStore,{row:e,column:t}=e.selected;return e&&t?{row:e,column:t}:null},clearActived(e){return(0,_log.warnLog)("vxe.error.delFunc",["clearActived","clearEdit"]),_.clearEdit(e)},clearEdit(e){return S(null,e)},clearSelected(){var e=I.editStore,e=e.selected;return e.row=null,e.column=null,l(),(0,_vue.nextTick)()},isActiveByRow(e){return(0,_log.warnLog)("vxe.error.delFunc",["isActiveByRow","isEditByRow"]),_.isEditByRow(e)},isEditByRow(e){var t=I.editStore;return t.actived.row===e},setActiveRow(e){return(0,_log.warnLog)("vxe.error.delFunc",["setActiveRow","setEditRow"]),p.setEditRow(e)},setEditRow(e,t){var l=E.visibleColumn;let r=_xeUtils.default.find(l,e=>(0,_utils.isEnableConf)(e.editRender)),o=!1;return t&&(o=!0)!==t&&(r=_xeUtils.default.isString(t)?_.getColumnByField(t):t),w(e,r,o)},setActiveCell(e,t){return(0,_log.warnLog)("vxe.error.delFunc",["setActiveCell","setEditCell"]),p.setEditCell(e,t)},setEditCell(e,t){return w(e,t,!0)},setSelectCell(e,t){var l=I.tableData,r=m.value,t=_xeUtils.default.isString(t)?_.getColumnByField(t):t;return e&&t&&"manual"!==r.trigger&&-1<(r=_.findRowIndexOf(l,e))&&t&&(l=_.getCellElement(e,t),e={row:e,rowIndex:r,column:t,columnIndex:_.getColumnIndex(t),cell:l},_.handleSelected(e,{})),(0,_vue.nextTick)()}},g={handleEdit(e,t){return i(e,t,!0,!0)},handleActived(e,t){return g.handleEdit(e,t)},handleClearEdit:S,handleFocus(r){var{row:o,column:a,cell:i}=r,n=a.editRender,d=m.value;if((0,_utils.isEnableConf)(n)){var u=renderer.get(n.name);let e=n.autofocus||n.autoFocus,t=n.autoSelect||n.autoselect,l;d.autoFocus&&(!e&&u&&(e=u.tableAutoFocus||u.tableAutofocus||u.autofocus),!t&&u&&(t=u.tableAutoSelect||u.autoselect),_xeUtils.default.isFunction(e)?l=e(r):e&&(l=!0===e?i.querySelector("input,textarea"):i.querySelector(e))&&l.focus()),l?t?l.select():s.msie&&((n=l.createTextRange()).collapse(!1),n.select()):d.autoPos&&!a.fixed&&_.scrollToRow(o,a)}},handleSelected(e,t){var l=C.mouseConfig,r=I.editStore,o=c.value;let a=m.value,{actived:i,selected:n}=r,{row:d,column:u}=e,s=l&&o.selected;return!s||n.row===d&&n.column===u||(i.row!==d||"cell"===a.mode&&i.column!==u)&&(S(t),_.clearSelected(),_.clearCellAreas&&(_.clearCellAreas(),_.clearCopyCellArea()),n.args=e,n.row=d,n.column=u,s&&g.addCellSelectedClass(),_.focus(),t)&&_.dispatchEvent("cell-selected",e,t),(0,_vue.nextTick)()},addCellSelectedClass(){var e=I.editStore,e=e.selected,{row:e,column:t}=e;l(),e&&t&&(e=_.getCellElement(e,t))&&(0,_dom.addClass)(e,"col--selected")}},Object.assign(Object.assign({},p),g)},setupGrid(e){return e.extendTableMethods(tableEditMethodKeys)},setupGantt(e){return e.extendTableMethods(tableEditMethodKeys)}});