vxe-table 4.15.0-beta.14 → 4.15.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/custom/hook.js +23 -15
  3. package/es/table/src/columnInfo.js +2 -0
  4. package/es/table/src/table.js +133 -49
  5. package/es/table/src/util.js +9 -0
  6. package/es/ui/index.js +1 -1
  7. package/es/ui/src/log.js +1 -1
  8. package/lib/index.umd.js +56 -32
  9. package/lib/index.umd.min.js +1 -1
  10. package/lib/style.css +1 -1
  11. package/lib/table/module/custom/hook.js +26 -14
  12. package/lib/table/module/custom/hook.min.js +1 -1
  13. package/lib/table/src/columnInfo.js +2 -0
  14. package/lib/table/src/columnInfo.min.js +1 -1
  15. package/lib/table/src/table.js +16 -16
  16. package/lib/table/src/table.min.js +1 -1
  17. package/lib/table/src/util.js +10 -0
  18. package/lib/table/src/util.min.js +1 -1
  19. package/lib/ui/index.js +1 -1
  20. package/lib/ui/index.min.js +1 -1
  21. package/lib/ui/src/log.js +1 -1
  22. package/lib/ui/src/log.min.js +1 -1
  23. package/package.json +1 -1
  24. package/packages/table/module/custom/hook.ts +22 -14
  25. package/packages/table/src/columnInfo.ts +3 -0
  26. package/packages/table/src/table.ts +137 -51
  27. package/packages/table/src/util.ts +10 -0
  28. /package/es/{iconfont.1753785070937.ttf → iconfont.1753864741935.ttf} +0 -0
  29. /package/es/{iconfont.1753785070937.woff → iconfont.1753864741935.woff} +0 -0
  30. /package/es/{iconfont.1753785070937.woff2 → iconfont.1753864741935.woff2} +0 -0
  31. /package/lib/{iconfont.1753785070937.ttf → iconfont.1753864741935.ttf} +0 -0
  32. /package/lib/{iconfont.1753785070937.woff → iconfont.1753864741935.woff} +0 -0
  33. /package/lib/{iconfont.1753785070937.woff2 → iconfont.1753864741935.woff2} +0 -0
@@ -19,6 +19,7 @@ exports.getCellRestHeight = getCellRestHeight;
19
19
  exports.getCellValue = getCellValue;
20
20
  exports.getColReMaxWidth = getColReMaxWidth;
21
21
  exports.getColReMinWidth = getColReMinWidth;
22
+ exports.getColumnList = getColumnList;
22
23
  exports.getOffsetSize = void 0;
23
24
  exports.getRefElem = getRefElem;
24
25
  exports.getRootColumn = getRootColumn;
@@ -373,6 +374,14 @@ function getColReMinWidth(params) {
373
374
  function isColumnInfo(column) {
374
375
  return column && (column.constructor === _columnInfo.ColumnInfo || column instanceof _columnInfo.ColumnInfo);
375
376
  }
377
+ // 获取所有的列,排除分组
378
+ function getColumnList(columns) {
379
+ const result = [];
380
+ columns.forEach(column => {
381
+ result.push(...(column.children && column.children.length ? getColumnList(column.children) : [column]));
382
+ });
383
+ return result;
384
+ }
376
385
  function createColumn($xeTable, options, renderOptions) {
377
386
  return isColumnInfo(options) ? options : (0, _vue.reactive)(new _columnInfo.ColumnInfo($xeTable, options, renderOptions));
378
387
  }
@@ -402,6 +411,7 @@ function assembleColumn($xeTable, elem, column, colgroup) {
402
411
  const parentColumn = colgroup ? colgroup.columnConfig : null;
403
412
  const parentCols = parentColumn ? parentColumn.children : staticColumns;
404
413
  if (parentElem && parentCols) {
414
+ column.defaultParentId = parentColumn ? parentColumn.id : null;
405
415
  parentCols.splice(_xeUtils.default.arrayIndexOf(parentElem.children, elem), 0, column);
406
416
  reactData.staticColumns = staticColumns.slice(0);
407
417
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.assembleColumn=assembleColumn,exports.calcTreeLine=calcTreeLine,exports.clearTableAllStatus=clearTableAllStatus,exports.clearTableDefaultStatus=clearTableDefaultStatus,exports.colToVisible=colToVisible,exports.convertHeaderColumnToRows=void 0,exports.createColumn=createColumn,exports.createHandleGetRowId=createHandleGetRowId,exports.createHandleUpdateRowId=createHandleUpdateRowId,exports.destroyColumn=destroyColumn,exports.encodeRowid=encodeRowid,exports.getCalcHeight=getCalcHeight,exports.getCellRestHeight=getCellRestHeight,exports.getCellValue=getCellValue,exports.getColReMaxWidth=getColReMaxWidth,exports.getColReMinWidth=getColReMinWidth,exports.getOffsetSize=void 0,exports.getRefElem=getRefElem,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=handleFieldOrColumn,exports.handleRowidOrRow=handleRowidOrRow,exports.hasDeepKey=hasDeepKey,exports.isColumnInfo=isColumnInfo,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq,exports.updateDeepRowKey=updateDeepRowKey,exports.updateFastRowKey=updateFastRowKey,exports.watchColumn=watchColumn;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let getAllConvertColumns=(e,t)=>{let l=[];return e.forEach(e=>{e.parentId=t?t.id:null,e.visible&&(e.children&&e.children.length&&e.children.some(e=>e.visible)?(l.push(e),l.push(...getAllConvertColumns(e.children,e))):l.push(e))}),l},convertHeaderColumnToRows=e=>{let t=1,r=(l,e)=>{if(e&&(l.level=e.level+1,t<l.level)&&(t=l.level),l.children&&l.children.length&&l.children.some(e=>e.visible)){let t=0;l.children.forEach(e=>{e.visible&&(r(e,l),t+=e.colSpan)}),l.colSpan=t}else l.colSpan=1},l=(e.forEach(e=>{e.level=1,r(e)}),[]);for(let e=0;e<t;e++)l.push([]);return getAllConvertColumns(e).forEach(e=>{e.children&&e.children.length&&e.children.some(e=>e.visible)?e.rowSpan=1:e.rowSpan=t-e.level+1,l[e.level-1].push(e)}),l};function restoreScrollLocation(e,t,l){var r=e.internalData;return t||l?(r.intoRunScroll=!1,r.inVirtualScroll=!1,r.inWheelScroll=!1,r.inHeaderScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,r.scrollRenderType="",e.scrollTo(t,l)):e.clearScroll()}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function hasDeepKey(e){return-1<e.indexOf(".")}function getRowkey(e){e=e.internalData.currKeyField;return e}function getRowid(e,t){var{isCurrDeepKey:e,currKeyField:l}=e.internalData;return t?encodeRowid((e?getDeepRowIdByKey:getFastRowIdByKey)(t,l)):""}function createHandleUpdateRowId(e){let{isCurrDeepKey:t,currKeyField:l}=e.internalData,r=t?updateDeepRowKey:updateFastRowKey;return{rowKey:l,handleUpdateRowId(e){return e?r(e,l):""}}}function createHandleGetRowId(e){let{isCurrDeepKey:t,currKeyField:l}=e.internalData,r=t?getDeepRowIdByKey:getFastRowIdByKey;return{rowKey:l,handleGetRowId(e){return e?encodeRowid(r(e,l)):""}}}function encodeRowid(e){return _xeUtils.default.eqNull(e)?"":encodeURIComponent(e)}function getDeepRowIdByKey(e,t){return _xeUtils.default.get(e,t)}function updateDeepRowKey(e,t){let l=encodeRowid(getDeepRowIdByKey(e,t));return(0,_utils.eqEmptyValue)(l)&&(l=getRowUniqueId(),_xeUtils.default.set(e,t,l)),l}function getFastRowIdByKey(e,t){return e[t]}function updateFastRowKey(e,t){let l=encodeRowid(getFastRowIdByKey(e,t));return(0,_utils.eqEmptyValue)(l)&&(l=getRowUniqueId(),e[t]=l),l}function handleFieldOrColumn(e,t){return t?_xeUtils.default.isString(t)||_xeUtils.default.isNumber(t)?e.getColumnByField(""+t):t:null}function handleRowidOrRow(e,t){return t?(t=_xeUtils.default.isString(t)||_xeUtils.default.isNumber(t)?t:getRowid(e,t),e.getRowById(t)):null}function getCellRestHeight(e,t,l,r){return e.resizeHeight||t.height||l.height||e.height||r}function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElementMarginAndWidth(e){var t,l;return e?(l=getComputedStyle(e),t=_xeUtils.default.toNumber(l.marginLeft),l=_xeUtils.default.toNumber(l.marginRight),e.offsetWidth+t+l):0}function toFilters(e){return e&&_xeUtils.default.isArray(e)?e.map(({label:e,value:t,data:l,resetValue:r,checked:o})=>({label:e,value:t,data:l,resetValue:r,checked:!!o,_checked:!!o})):e}function toTreePathSeq(e){return e.map((e,t)=>t%2==0?Number(e)+1:".").join("")}function getCellValue(e,t){return _xeUtils.default.get(e,t.field)}function setCellValue(e,t,l){return _xeUtils.default.set(e,t.field,l)}function getRefElem(e){if(e){e=e.value;if(e)return e.$el||e}return null}function getCalcHeight(e){return"unset"!==e&&e||0}function getColReMaxWidth(e){var t=e.$table,t=t.getComputeMaps().computeResizableOpts,t=t.value.maxWidth;if(t){e=_xeUtils.default.isFunction(t)?t(e):t;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}return-1}function getColReMinWidth(e){var{$table:t,column:l,cell:r}=e,o=t.props,i=t.internalData,t=t.getComputeMaps().computeResizableOpts,t=t.value.minWidth;if(t){e=_xeUtils.default.isFunction(t)?t(e):t;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var n,a,u,d,t=i.elemStore,e=o.showHeaderOverflow,{showHeaderOverflow:i,minWidth:o}=l,l=_xeUtils.default.isUndefined(i)||_xeUtils.default.isNull(i)?e:i,e="title"===l||(!0===l||"tooltip"===l)||"ellipsis"===l;let s=_xeUtils.default.floor(1.8*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize((0,_dom.queryElement)(r,".vxe-cell")));if(e&&(i=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--drag-handle")),l=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--checkbox")),e=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--required-icon")),n=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--edit-icon")),a=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell-title-prefix-icon")),u=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell-title-suffix-icon")),d=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--sort")),r=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--filter")),s+=i+l+e+n+a+u+r+d),o){i=getRefElem(t["main-body-scroll"]);if(i){if((0,_dom.isScale)(o))return l=(i.clientWidth-1)/100,Math.max(s,Math.floor(_xeUtils.default.toInteger(o)*l));if((0,_dom.isPx)(o))return Math.max(s,_xeUtils.default.toInteger(o))}}return s}function isColumnInfo(e){return e&&(e.constructor===_columnInfo.ColumnInfo||e instanceof _columnInfo.ColumnInfo)}function createColumn(e,t,l){return isColumnInfo(t)?t:(0,_vue.reactive)(new _columnInfo.ColumnInfo(e,t,l))}function watchColumn(l,e,r){Object.keys(e).forEach(t=>{(0,_vue.watch)(()=>e[t],e=>{r.update(t,e),l&&("filters"===t?(l.setFilter(r,e),l.handleUpdateDataQueue()):["visible","fixed","width","minWidth","maxWidth"].includes(t)&&l.handleRefreshColumnQueue())})})}function assembleColumn(e,t,l,r){var e=e.reactData,o=e.staticColumns,i=t.parentNode,r=r?r.columnConfig:null,r=r?r.children:o;i&&r&&(r.splice(_xeUtils.default.arrayIndexOf(i.children,t),0,l),e.staticColumns=o.slice(0))}function destroyColumn(e,t){var e=e.reactData,l=e.staticColumns,r=_xeUtils.default.findTree(l,e=>e.id===t.id,{children:"children"});r&&r.items.splice(r.index,1),e.staticColumns=l.slice(0)}function getRootColumn(e,t){var e=e.internalData,l=e.fullColumnIdData;if(!t)return null;let r=t.parentId;for(;l[r];){let e=l[r].column;if(!(r=e.parentId))return e}return t}exports.convertHeaderColumnToRows=convertHeaderColumnToRows;let lineOffsetSizes={mini:3,small:2,medium:1,large:0},countTreeExpand=(e,t)=>{let l=1;if(e){var r=t.$table,o=r.reactData.treeExpandedFlag,i=r.internalData.treeExpandedMaps,n=r.getComputeMaps().computeTreeOpts,n=n.value,{transform:a,mapChildrenField:u}=n,n=n.children||n.childrenField,d=e[a?u:n];if(d&&o&&i[getRowid(r,e)])for(let e=0;e<d.length;e++)l+=countTreeExpand(d[e],t)}return l},getOffsetSize=e=>{e=e.getComputeMaps().computeSize,e=e.value;return e&&lineOffsetSizes[e]||0};function calcTreeLine(e,t){var{$table:l,row:r}=e,o=l.props.showOverflow,i=l.reactData.scrollYLoad,n=l.internalData.fullAllDataRowIdData,{computeRowOpts:a,computeCellOpts:u,computeDefaultRowHeight:d}=l.getComputeMaps(),a=a.value,u=u.value,d=d.value,n=n[getRowid(l,r)],r=n.resizeHeight||u.height||a.height||n.height||d;let s=1,c=(t&&(s=countTreeExpand(t,e)),r);return(c=i&&!o?n.height||r:c)*s-(t?1:12-getOffsetSize(l))}function clearTableDefaultStatus(e){var{props:t,internalData:l}=e;return l.initStatus=!1,e.clearSort(),e.clearCurrentRow(),e.clearCurrentColumn(),e.clearRadioRow(),e.clearRadioReserve(),e.clearCheckboxRow(),e.clearCheckboxReserve(),e.clearRowExpand(),e.clearTreeExpand(),e.clearTreeExpandReserve(),e.clearPendingRow(),e.clearFilter&&e.clearFilter(),e.clearSelected&&(t.keyboardConfig||t.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&t.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function rowToVisible(l,r){var e=l.props,t=l.reactData,o=l.internalData,{computeLeftFixedWidth:i,computeRightFixedWidth:n,computeRowOpts:a,computeCellOpts:u,computeDefaultRowHeight:d}=l.getComputeMaps(),e=e.showOverflow,{scrollYLoad:t,scrollYTop:s}=t,{elemStore:o,afterFullData:c,fullAllDataRowIdData:f,isResizeCellHeight:m}=o,h=a.value,p=u.value,g=d.value,a=i.value,u=n.value,d=getRefElem(o["main-body-scroll"]),R=getRowid(l,r);if(d){i=d.clientHeight,n=d.scrollTop,o=d.querySelector(`[rowid="${R}"]`);if(o){d=o.offsetTop+(t?s:0),s=o.clientHeight;if(d<n||n+i<d)return l.scrollTo(null,d);if(i+n<=d+s)return l.scrollTo(null,n+s)}else if(t){if(!(m||p.height||h.height)&&e)return l.scrollTo(null,(l.findRowIndexOf(c,r)-1)*g);let t=0;o=f[R]||{},d=o.resizeHeight||p.height||h.height||o.height||g;for(let e=0;e<c.length;e++){var x=c[e],w=getRowid(l,x);if(x===r||w===R)break;x=f[w]||{};t+=x.resizeHeight||p.height||h.height||x.height||g}return t<n?l.scrollTo(null,t-a-1):l.scrollTo(null,t+d-(i-u-1))}}return Promise.resolve()}function colToVisible(l,r,t){var o=l.reactData,i=l.internalData,{computeLeftFixedWidth:n,computeRightFixedWidth:a}=l.getComputeMaps(),{scrollXLoad:o,scrollXLeft:u}=o,{elemStore:i,visibleColumn:d}=i,n=n.value,a=a.value,i=getRefElem(i["main-body-scroll"]);if(!r.fixed&&i){var s=i.clientWidth,c=i.scrollLeft;let e=null;if(t&&(t=getRowid(l,t),e=i.querySelector(`[rowid="${t}"] .`+r.id)),e=e||i.querySelector("."+r.id)){t=e.offsetLeft+(o?u:0),i=e.clientWidth;if(t<c+n)return l.scrollTo(t-n-1);if(s-a<t+i-c)return l.scrollTo(t+i-(s-a-1))}else if(o){let t=0;u=r.renderWidth;for(let e=0;e<d.length;e++){var f=d[e];if(f===r||f.id===r.id)break;t+=f.renderWidth}return t<c?l.scrollTo(t-n-1):l.scrollTo(t+u-(s-a-1))}}return Promise.resolve()}exports.getOffsetSize=getOffsetSize;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.assembleColumn=assembleColumn,exports.calcTreeLine=calcTreeLine,exports.clearTableAllStatus=clearTableAllStatus,exports.clearTableDefaultStatus=clearTableDefaultStatus,exports.colToVisible=colToVisible,exports.convertHeaderColumnToRows=void 0,exports.createColumn=createColumn,exports.createHandleGetRowId=createHandleGetRowId,exports.createHandleUpdateRowId=createHandleUpdateRowId,exports.destroyColumn=destroyColumn,exports.encodeRowid=encodeRowid,exports.getCalcHeight=getCalcHeight,exports.getCellRestHeight=getCellRestHeight,exports.getCellValue=getCellValue,exports.getColReMaxWidth=getColReMaxWidth,exports.getColReMinWidth=getColReMinWidth,exports.getColumnList=getColumnList,exports.getOffsetSize=void 0,exports.getRefElem=getRefElem,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=handleFieldOrColumn,exports.handleRowidOrRow=handleRowidOrRow,exports.hasDeepKey=hasDeepKey,exports.isColumnInfo=isColumnInfo,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq,exports.updateDeepRowKey=updateDeepRowKey,exports.updateFastRowKey=updateFastRowKey,exports.watchColumn=watchColumn;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let getAllConvertColumns=(e,t)=>{let l=[];return e.forEach(e=>{e.parentId=t?t.id:null,e.visible&&(e.children&&e.children.length&&e.children.some(e=>e.visible)?(l.push(e),l.push(...getAllConvertColumns(e.children,e))):l.push(e))}),l},convertHeaderColumnToRows=e=>{let t=1,r=(l,e)=>{if(e&&(l.level=e.level+1,t<l.level)&&(t=l.level),l.children&&l.children.length&&l.children.some(e=>e.visible)){let t=0;l.children.forEach(e=>{e.visible&&(r(e,l),t+=e.colSpan)}),l.colSpan=t}else l.colSpan=1},l=(e.forEach(e=>{e.level=1,r(e)}),[]);for(let e=0;e<t;e++)l.push([]);return getAllConvertColumns(e).forEach(e=>{e.children&&e.children.length&&e.children.some(e=>e.visible)?e.rowSpan=1:e.rowSpan=t-e.level+1,l[e.level-1].push(e)}),l};function restoreScrollLocation(e,t,l){var r=e.internalData;return t||l?(r.intoRunScroll=!1,r.inVirtualScroll=!1,r.inWheelScroll=!1,r.inHeaderScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,r.scrollRenderType="",e.scrollTo(t,l)):e.clearScroll()}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function hasDeepKey(e){return-1<e.indexOf(".")}function getRowkey(e){e=e.internalData.currKeyField;return e}function getRowid(e,t){var{isCurrDeepKey:e,currKeyField:l}=e.internalData;return t?encodeRowid((e?getDeepRowIdByKey:getFastRowIdByKey)(t,l)):""}function createHandleUpdateRowId(e){let{isCurrDeepKey:t,currKeyField:l}=e.internalData,r=t?updateDeepRowKey:updateFastRowKey;return{rowKey:l,handleUpdateRowId(e){return e?r(e,l):""}}}function createHandleGetRowId(e){let{isCurrDeepKey:t,currKeyField:l}=e.internalData,r=t?getDeepRowIdByKey:getFastRowIdByKey;return{rowKey:l,handleGetRowId(e){return e?encodeRowid(r(e,l)):""}}}function encodeRowid(e){return _xeUtils.default.eqNull(e)?"":encodeURIComponent(e)}function getDeepRowIdByKey(e,t){return _xeUtils.default.get(e,t)}function updateDeepRowKey(e,t){let l=encodeRowid(getDeepRowIdByKey(e,t));return(0,_utils.eqEmptyValue)(l)&&(l=getRowUniqueId(),_xeUtils.default.set(e,t,l)),l}function getFastRowIdByKey(e,t){return e[t]}function updateFastRowKey(e,t){let l=encodeRowid(getFastRowIdByKey(e,t));return(0,_utils.eqEmptyValue)(l)&&(l=getRowUniqueId(),e[t]=l),l}function handleFieldOrColumn(e,t){return t?_xeUtils.default.isString(t)||_xeUtils.default.isNumber(t)?e.getColumnByField(""+t):t:null}function handleRowidOrRow(e,t){return t?(t=_xeUtils.default.isString(t)||_xeUtils.default.isNumber(t)?t:getRowid(e,t),e.getRowById(t)):null}function getCellRestHeight(e,t,l,r){return e.resizeHeight||t.height||l.height||e.height||r}function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElementMarginAndWidth(e){var t,l;return e?(l=getComputedStyle(e),t=_xeUtils.default.toNumber(l.marginLeft),l=_xeUtils.default.toNumber(l.marginRight),e.offsetWidth+t+l):0}function toFilters(e){return e&&_xeUtils.default.isArray(e)?e.map(({label:e,value:t,data:l,resetValue:r,checked:o})=>({label:e,value:t,data:l,resetValue:r,checked:!!o,_checked:!!o})):e}function toTreePathSeq(e){return e.map((e,t)=>t%2==0?Number(e)+1:".").join("")}function getCellValue(e,t){return _xeUtils.default.get(e,t.field)}function setCellValue(e,t,l){return _xeUtils.default.set(e,t.field,l)}function getRefElem(e){if(e){e=e.value;if(e)return e.$el||e}return null}function getCalcHeight(e){return"unset"!==e&&e||0}function getColReMaxWidth(e){var t=e.$table,t=t.getComputeMaps().computeResizableOpts,t=t.value.maxWidth;if(t){e=_xeUtils.default.isFunction(t)?t(e):t;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}return-1}function getColReMinWidth(e){var{$table:t,column:l,cell:r}=e,o=t.props,i=t.internalData,t=t.getComputeMaps().computeResizableOpts,t=t.value.minWidth;if(t){e=_xeUtils.default.isFunction(t)?t(e):t;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var n,a,u,d,t=i.elemStore,e=o.showHeaderOverflow,{showHeaderOverflow:i,minWidth:o}=l,l=_xeUtils.default.isUndefined(i)||_xeUtils.default.isNull(i)?e:i,e="title"===l||(!0===l||"tooltip"===l)||"ellipsis"===l;let s=_xeUtils.default.floor(1.8*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize((0,_dom.queryElement)(r,".vxe-cell")));if(e&&(i=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--drag-handle")),l=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--checkbox")),e=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--required-icon")),n=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--edit-icon")),a=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell-title-prefix-icon")),u=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell-title-suffix-icon")),d=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--sort")),r=getElementMarginAndWidth((0,_dom.queryElement)(r,".vxe-cell--filter")),s+=i+l+e+n+a+u+r+d),o){i=getRefElem(t["main-body-scroll"]);if(i){if((0,_dom.isScale)(o))return l=(i.clientWidth-1)/100,Math.max(s,Math.floor(_xeUtils.default.toInteger(o)*l));if((0,_dom.isPx)(o))return Math.max(s,_xeUtils.default.toInteger(o))}}return s}function isColumnInfo(e){return e&&(e.constructor===_columnInfo.ColumnInfo||e instanceof _columnInfo.ColumnInfo)}function getColumnList(e){let t=[];return e.forEach(e=>{t.push(...e.children&&e.children.length?getColumnList(e.children):[e])}),t}function createColumn(e,t,l){return isColumnInfo(t)?t:(0,_vue.reactive)(new _columnInfo.ColumnInfo(e,t,l))}function watchColumn(l,e,r){Object.keys(e).forEach(t=>{(0,_vue.watch)(()=>e[t],e=>{r.update(t,e),l&&("filters"===t?(l.setFilter(r,e),l.handleUpdateDataQueue()):["visible","fixed","width","minWidth","maxWidth"].includes(t)&&l.handleRefreshColumnQueue())})})}function assembleColumn(e,t,l,r){var e=e.reactData,o=e.staticColumns,i=t.parentNode,r=r?r.columnConfig:null,n=r?r.children:o;i&&n&&(l.defaultParentId=r?r.id:null,n.splice(_xeUtils.default.arrayIndexOf(i.children,t),0,l),e.staticColumns=o.slice(0))}function destroyColumn(e,t){var e=e.reactData,l=e.staticColumns,r=_xeUtils.default.findTree(l,e=>e.id===t.id,{children:"children"});r&&r.items.splice(r.index,1),e.staticColumns=l.slice(0)}function getRootColumn(e,t){var e=e.internalData,l=e.fullColumnIdData;if(!t)return null;let r=t.parentId;for(;l[r];){let e=l[r].column;if(!(r=e.parentId))return e}return t}exports.convertHeaderColumnToRows=convertHeaderColumnToRows;let lineOffsetSizes={mini:3,small:2,medium:1,large:0},countTreeExpand=(e,t)=>{let l=1;if(e){var r=t.$table,o=r.reactData.treeExpandedFlag,i=r.internalData.treeExpandedMaps,n=r.getComputeMaps().computeTreeOpts,n=n.value,{transform:a,mapChildrenField:u}=n,n=n.children||n.childrenField,d=e[a?u:n];if(d&&o&&i[getRowid(r,e)])for(let e=0;e<d.length;e++)l+=countTreeExpand(d[e],t)}return l},getOffsetSize=e=>{e=e.getComputeMaps().computeSize,e=e.value;return e&&lineOffsetSizes[e]||0};function calcTreeLine(e,t){var{$table:l,row:r}=e,o=l.props.showOverflow,i=l.reactData.scrollYLoad,n=l.internalData.fullAllDataRowIdData,{computeRowOpts:a,computeCellOpts:u,computeDefaultRowHeight:d}=l.getComputeMaps(),a=a.value,u=u.value,d=d.value,n=n[getRowid(l,r)],r=n.resizeHeight||u.height||a.height||n.height||d;let s=1,c=(t&&(s=countTreeExpand(t,e)),r);return(c=i&&!o?n.height||r:c)*s-(t?1:12-getOffsetSize(l))}function clearTableDefaultStatus(e){var{props:t,internalData:l}=e;return l.initStatus=!1,e.clearSort(),e.clearCurrentRow(),e.clearCurrentColumn(),e.clearRadioRow(),e.clearRadioReserve(),e.clearCheckboxRow(),e.clearCheckboxReserve(),e.clearRowExpand(),e.clearTreeExpand(),e.clearTreeExpandReserve(),e.clearPendingRow(),e.clearFilter&&e.clearFilter(),e.clearSelected&&(t.keyboardConfig||t.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&t.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function rowToVisible(l,r){var e=l.props,t=l.reactData,o=l.internalData,{computeLeftFixedWidth:i,computeRightFixedWidth:n,computeRowOpts:a,computeCellOpts:u,computeDefaultRowHeight:d}=l.getComputeMaps(),e=e.showOverflow,{scrollYLoad:t,scrollYTop:s}=t,{elemStore:o,afterFullData:c,fullAllDataRowIdData:f,isResizeCellHeight:m}=o,h=a.value,g=u.value,p=d.value,a=i.value,u=n.value,d=getRefElem(o["main-body-scroll"]),R=getRowid(l,r);if(d){i=d.clientHeight,n=d.scrollTop,o=d.querySelector(`[rowid="${R}"]`);if(o){d=o.offsetTop+(t?s:0),s=o.clientHeight;if(d<n||n+i<d)return l.scrollTo(null,d);if(i+n<=d+s)return l.scrollTo(null,n+s)}else if(t){if(!(m||g.height||h.height)&&e)return l.scrollTo(null,(l.findRowIndexOf(c,r)-1)*p);let t=0;o=f[R]||{},d=o.resizeHeight||g.height||h.height||o.height||p;for(let e=0;e<c.length;e++){var x=c[e],w=getRowid(l,x);if(x===r||w===R)break;x=f[w]||{};t+=x.resizeHeight||g.height||h.height||x.height||p}return t<n?l.scrollTo(null,t-a-1):l.scrollTo(null,t+d-(i-u-1))}}return Promise.resolve()}function colToVisible(l,r,t){var o=l.reactData,i=l.internalData,{computeLeftFixedWidth:n,computeRightFixedWidth:a}=l.getComputeMaps(),{scrollXLoad:o,scrollXLeft:u}=o,{elemStore:i,visibleColumn:d}=i,n=n.value,a=a.value,i=getRefElem(i["main-body-scroll"]);if(!r.fixed&&i){var s=i.clientWidth,c=i.scrollLeft;let e=null;if(t&&(t=getRowid(l,t),e=i.querySelector(`[rowid="${t}"] .`+r.id)),e=e||i.querySelector("."+r.id)){t=e.offsetLeft+(o?u:0),i=e.clientWidth;if(t<c+n)return l.scrollTo(t-n-1);if(s-a<t+i-c)return l.scrollTo(t+i-(s-a-1))}else if(o){let t=0;u=r.renderWidth;for(let e=0;e<d.length;e++){var f=d[e];if(f===r||f.id===r.id)break;t+=f.renderWidth}return t<c?l.scrollTo(t-n-1):l.scrollTo(t+u-(s-a-1))}}return Promise.resolve()}exports.getOffsetSize=getOffsetSize;
package/lib/ui/index.js CHANGED
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "VxeUI", {
13
13
  exports.version = exports.validators = exports.use = exports.t = exports.setup = exports.setTheme = exports.setLanguage = exports.setIcon = exports.setI18n = exports.setConfig = exports.saveFile = exports.renderer = exports.readFile = exports.print = exports.modal = exports.menus = exports.log = exports.interceptor = exports.hooks = exports.globalResize = exports.globalEvents = exports.getTheme = exports.getIcon = exports.getI18n = exports.getConfig = exports.formats = exports.default = exports.config = exports.commands = exports.clipboard = exports._t = void 0;
14
14
  var _core = require("@vxe-ui/core");
15
15
  var _utils = require("./src/utils");
16
- const version = exports.version = "4.15.0-beta.14";
16
+ const version = exports.version = "4.15.0-beta.16";
17
17
  _core.VxeUI.version = version;
18
18
  _core.VxeUI.tableVersion = version;
19
19
  _core.VxeUI.setConfig({
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.hooks=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");let version=exports.version="4.15.0-beta.14",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0,isSyncAutoHeight:!0,isSyncAutoWidth:!0,minHeight:18},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{autoOptions:{isCalcHeader:!0,isCalcBody:!0,isCalcFooter:!0},maxFixedSize:4},cellConfig:{padding:!0},headerCellConfig:{height:"unset"},footerCellConfig:{height:"unset"},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",storeOptions:{visible:!0,resizable:!0,sort:!0,fixed:!0},modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,allowClear:!0,allowBtn:!0,iconLayout:"vertical"},filterConfig:{multiple:!0,showIcon:!0},aggregateConfig:{padding:!0,rowField:"id",parentField:"_X_ROW_PARENT_KEY",childrenField:"_X_ROW_CHILDREN",mapChildrenField:"_X_ROW_CHILD_LIST",indent:20,showIcon:!0,maxGroupSize:4,showAggFuncTitle:!0},treeConfig:{padding:!0,rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0,mode:"fixed"},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isAll:!0,isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0,extendDirection:{top:!0,left:!0,bottom:!0,right:!0}},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},virtualXConfig:{gt:24,preSize:1,oSize:0},virtualYConfig:{gt:100,preSize:1,oSize:0},scrollbarConfig:{}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showLoading:!0,showResponseMsg:!0,showActionMsg:!0,response:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_CHECKBOX_DISABLED_UNCHECKED:iconPrefix+"checkbox-unchecked-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_RADIO_DISABLED_UNCHECKED:iconPrefix+"radio-unchecked-fill",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_AGG_GROUP:iconPrefix+"grouping",TABLE_DRAG_STATUS_AGG_VALUES:iconPrefix+"values",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TABLE_ROW_GROUP_OPEN:iconPrefix+"arrow-right rotate90",TABLE_ROW_GROUP_CLOSE:iconPrefix+"arrow-right",TABLE_AGGREGATE_GROUPING:iconPrefix+"grouping",TABLE_AGGREGATE_VALUES:iconPrefix+"values",TABLE_AGGREGATE_SORT:iconPrefix+"drag-handle",TABLE_AGGREGATE_DELETE:iconPrefix+"close",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,hooks=exports.hooks=_core.VxeUI.hooks,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,r){return _core.VxeUI.modal.alert(e,o,r)},confirm(e,o,r){return _core.VxeUI.modal.confirm(e,o,r)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,r){return _core.VxeUI.modal.notification(e,o,r)}});var _default=exports.default=_core.VxeUI;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.hooks=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");let version=exports.version="4.15.0-beta.16",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0,isSyncAutoHeight:!0,isSyncAutoWidth:!0,minHeight:18},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{autoOptions:{isCalcHeader:!0,isCalcBody:!0,isCalcFooter:!0},maxFixedSize:4},cellConfig:{padding:!0},headerCellConfig:{height:"unset"},footerCellConfig:{height:"unset"},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",storeOptions:{visible:!0,resizable:!0,sort:!0,fixed:!0},modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,allowClear:!0,allowBtn:!0,iconLayout:"vertical"},filterConfig:{multiple:!0,showIcon:!0},aggregateConfig:{padding:!0,rowField:"id",parentField:"_X_ROW_PARENT_KEY",childrenField:"_X_ROW_CHILDREN",mapChildrenField:"_X_ROW_CHILD_LIST",indent:20,showIcon:!0,maxGroupSize:4,showAggFuncTitle:!0},treeConfig:{padding:!0,rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0,mode:"fixed"},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isAll:!0,isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0,extendDirection:{top:!0,left:!0,bottom:!0,right:!0}},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},virtualXConfig:{gt:24,preSize:1,oSize:0},virtualYConfig:{gt:100,preSize:1,oSize:0},scrollbarConfig:{}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showLoading:!0,showResponseMsg:!0,showActionMsg:!0,response:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_CHECKBOX_DISABLED_UNCHECKED:iconPrefix+"checkbox-unchecked-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_RADIO_DISABLED_UNCHECKED:iconPrefix+"radio-unchecked-fill",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_AGG_GROUP:iconPrefix+"grouping",TABLE_DRAG_STATUS_AGG_VALUES:iconPrefix+"values",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TABLE_ROW_GROUP_OPEN:iconPrefix+"arrow-right rotate90",TABLE_ROW_GROUP_CLOSE:iconPrefix+"arrow-right",TABLE_AGGREGATE_GROUPING:iconPrefix+"grouping",TABLE_AGGREGATE_VALUES:iconPrefix+"values",TABLE_AGGREGATE_SORT:iconPrefix+"drag-handle",TABLE_AGGREGATE_DELETE:iconPrefix+"close",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,hooks=exports.hooks=_core.VxeUI.hooks,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,r){return _core.VxeUI.modal.alert(e,o,r)},confirm(e,o,r){return _core.VxeUI.modal.confirm(e,o,r)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,r){return _core.VxeUI.modal.notification(e,o,r)}});var _default=exports.default=_core.VxeUI;
package/lib/ui/src/log.js CHANGED
@@ -8,6 +8,6 @@ var _core = require("@vxe-ui/core");
8
8
  const {
9
9
  log
10
10
  } = _core.VxeUI;
11
- const version = `table v${"4.15.0-beta.14"}`;
11
+ const version = `table v${"4.15.0-beta.16"}`;
12
12
  const warnLog = exports.warnLog = log.create('warn', version);
13
13
  const errLog = exports.errLog = log.create('error', version);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v4.15.0-beta.14",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v4.15.0-beta.16",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "4.15.0-beta.14",
3
+ "version": "4.15.0-beta.16",
4
4
  "description": "A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -1,6 +1,7 @@
1
1
  import { nextTick } from 'vue'
2
2
  import { VxeUI } from '../../../ui'
3
3
  import XEUtils from 'xe-utils'
4
+ import { getColumnList } from '../../src/util'
4
5
 
5
6
  import type { TableCustomMethods, TableCustomPrivateMethods, VxeColumnPropTypes, VxeTableDefines } from '../../../../types'
6
7
 
@@ -111,21 +112,20 @@ VxeUI.hooks.add('tableCustomModule', {
111
112
  }
112
113
  })
113
114
  reactData.isCustomStatus = true
114
- return $xeTable.saveCustomStore('confirm').then(() => {
115
- if (allowGroup && !!$xeTable.handlePivotTableAggregateData) {
116
- if (rowGroupList.length !== aggHandleFields.length || rowGroupList.some((conf, i) => conf.field !== aggHandleFields[i])) {
117
- // 更新数据分组
118
- if (aggHandleFields.length) {
119
- $xeTable.setRowGroups(aggHandleFields)
120
- } else {
121
- $xeTable.clearRowGroups()
122
- }
123
- } else if (allowValues) {
124
- // 更新聚合函数
125
- $xeTable.handleUpdateAggData()
115
+ if (allowGroup && !!$xeTable.handlePivotTableAggregateData) {
116
+ if (rowGroupList.length !== aggHandleFields.length || rowGroupList.some((conf, i) => conf.field !== aggHandleFields[i])) {
117
+ // 更新数据分组
118
+ if (aggHandleFields.length) {
119
+ $xeTable.setRowGroups(aggHandleFields)
120
+ } else {
121
+ $xeTable.clearRowGroups()
126
122
  }
123
+ } else if (allowValues) {
124
+ // 更新聚合函数
125
+ $xeTable.handleUpdateAggData()
127
126
  }
128
- })
127
+ }
128
+ return $xeTable.saveCustomStore('confirm')
129
129
  }
130
130
 
131
131
  const cancelCustom = () => {
@@ -212,6 +212,7 @@ VxeUI.hooks.add('tableCustomModule', {
212
212
  sort: options === true,
213
213
  aggFunc: options === true
214
214
  }, options)
215
+ const allCols: VxeTableDefines.ColumnInfo[] = []
215
216
  XEUtils.eachTree(collectColumn, (column) => {
216
217
  if (opts.resizable) {
217
218
  column.resizeWidth = 0
@@ -221,6 +222,7 @@ VxeUI.hooks.add('tableCustomModule', {
221
222
  }
222
223
  if (opts.sort) {
223
224
  column.renderSortNumber = column.sortNumber
225
+ column.parentId = column.defaultParentId
224
226
  }
225
227
  if (!checkMethod || checkMethod({ $table: $xeTable, column })) {
226
228
  column.visible = column.defaultVisible
@@ -230,9 +232,14 @@ VxeUI.hooks.add('tableCustomModule', {
230
232
  column.renderAggFn = column.defaultAggFunc
231
233
  }
232
234
  column.renderResizeWidth = column.renderWidth
235
+ allCols.push(column)
233
236
  })
237
+ if (opts.sort) {
238
+ const newCollectCols = XEUtils.toArrayTree(XEUtils.orderBy(allCols, 'renderSortNumber'), { key: 'id', parentKey: 'parentId', children: 'children' })
239
+ internalData.collectColumn = newCollectCols
240
+ internalData.tableFullColumn = getColumnList(newCollectCols)
241
+ }
234
242
  reactData.isCustomStatus = false
235
- $xeTable.saveCustomStore('reset')
236
243
  return $xeTable.handleCustom().then(() => {
237
244
  if (opts.aggFunc && ($xeTable as any).handlePivotTableAggregateData) {
238
245
  const rowGroupFields = computeRowGroupFields.value
@@ -246,6 +253,7 @@ VxeUI.hooks.add('tableCustomModule', {
246
253
  $xeTable.handleUpdateAggData()
247
254
  }
248
255
  }
256
+ $xeTable.saveCustomStore('reset')
249
257
  })
250
258
  },
251
259
  toggleCustomAllCheckbox () {
@@ -119,9 +119,12 @@ export class ColumnInfo {
119
119
  parentId: null,
120
120
  visible,
121
121
  // 内部属性(一旦被使用,将导致不可升级版本)
122
+ defaultParentId: null,
122
123
  halfVisible: false,
123
124
  defaultVisible: visible,
124
125
  defaultFixed: _vm.fixed,
126
+
127
+ defaultAggGroup: _vm.aggGroup,
125
128
  defaultAggFunc: _vm.aggFunc,
126
129
 
127
130
  checked: false,
@@ -4,7 +4,7 @@ import XEUtils from 'xe-utils'
4
4
  import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey } from '../../ui/src/dom'
5
5
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils'
6
6
  import { VxeUI } from '../../ui'
7
- import { getRowUniqueId, clearTableAllStatus, toFilters, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCalcHeight, getCellRestHeight } from './util'
7
+ import { getRowUniqueId, clearTableAllStatus, getColumnList, toFilters, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCalcHeight, getCellRestHeight } from './util'
8
8
  import { getSlotVNs } from '../../ui/src/vn'
9
9
  import { moveRowAnimateToTb, clearRowAnimate, moveColAnimateToLr, clearColAnimate } from './anime'
10
10
  import { warnLog, errLog } from '../../ui/src/log'
@@ -1533,35 +1533,92 @@ export default defineVxeComponent({
1533
1533
  }
1534
1534
 
1535
1535
  const handleCustomRestore = (storeData: VxeTableDefines.CustomStoreData) => {
1536
- let { collectColumn } = internalData
1537
- const { resizableData, sortData, visibleData, fixedData } = storeData
1538
- let hasCustomSort = false
1536
+ const { aggregateConfig, rowGroupConfig } = props
1537
+ const { collectColumn } = internalData
1538
+ const customOpts = computeCustomOpts.value
1539
+ const { storage, storeOptions } = customOpts
1540
+ const isAllCustom = storage === true
1541
+ const storageOpts: VxeTableDefines.VxeTableCustomStorageObj = isAllCustom ? {} : Object.assign({}, storage || {}, storeOptions)
1542
+ const isCustomResizable = hangleStorageDefaultValue(storageOpts.resizable, isAllCustom)
1543
+ const isCustomVisible = hangleStorageDefaultValue(storageOpts.visible, isAllCustom)
1544
+ const isCustomFixed = hangleStorageDefaultValue(storageOpts.fixed, isAllCustom)
1545
+ const isCustomSort = hangleStorageDefaultValue(storageOpts.sort, isAllCustom)
1546
+ const isCustomAggGroup = hangleStorageDefaultValue(storageOpts.aggGroup, isAllCustom)
1547
+ const isCustomAggFunc = hangleStorageDefaultValue(storageOpts.aggFunc, isAllCustom)
1548
+ let { resizableData, sortData, visibleData, fixedData, aggGroupData, aggFuncData } = storeData
1539
1549
  // 处理还原
1540
- if (resizableData || sortData || visibleData || fixedData) {
1550
+ if ((isCustomResizable && resizableData) || (isCustomSort && sortData) || (isCustomVisible && visibleData) || (isCustomFixed && fixedData) || (isCustomAggGroup && aggGroupData) || (isCustomAggFunc && aggFuncData)) {
1551
+ const sortColMaps: Record<string, {
1552
+ key: string
1553
+ sNum: number
1554
+ pKey: string | null
1555
+ }> = {}
1556
+ if (isCustomSort && sortData) {
1557
+ // 转换兼容老版本数据,即将废弃兼容
1558
+ if (!XEUtils.isArray(sortData)) {
1559
+ const sortRests: {key: string, index: number}[] = []
1560
+ XEUtils.each(sortData, (index: number, colKey: string) => {
1561
+ sortRests.push({ key: colKey, index })
1562
+ })
1563
+ sortData = XEUtils.orderBy(sortRests, { field: 'index', order: 'asc' }).map(item => ({ k: item.key }))
1564
+ }
1565
+ let colNum = 1
1566
+ XEUtils.eachTree(sortData, (sObj, index, sOjs, path, pSObj) => {
1567
+ sortColMaps[sObj.k] = {
1568
+ key: sObj.k,
1569
+ sNum: colNum++,
1570
+ pKey: pSObj ? pSObj.k : null
1571
+ }
1572
+ }, { children: 'c' })
1573
+ }
1574
+ const colKeyMaps: Record<string, VxeTableDefines.ColumnInfo> = {}
1575
+ const allCols: VxeTableDefines.ColumnInfo[] = []
1576
+ const aggGroupConfs: VxeTableDefines.RowGroupItem[] = []
1541
1577
  XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
1542
1578
  const colKey = column.getKey()
1543
1579
  // 支持一级
1544
1580
  if (!parentColumn) {
1545
- if (fixedData && fixedData[colKey] !== undefined) {
1581
+ if (isCustomFixed && fixedData && fixedData[colKey] !== undefined) {
1546
1582
  column.fixed = fixedData[colKey]
1547
1583
  }
1548
- if (sortData && XEUtils.isNumber(sortData[colKey])) {
1549
- hasCustomSort = true
1550
- column.renderSortNumber = sortData[colKey]
1551
- }
1552
1584
  }
1553
- if (resizableData && XEUtils.isNumber(resizableData[colKey])) {
1585
+ if (isCustomResizable && resizableData && XEUtils.isNumber(resizableData[colKey])) {
1554
1586
  column.resizeWidth = resizableData[colKey]
1555
1587
  }
1556
- if (visibleData && XEUtils.isBoolean(visibleData[colKey])) {
1588
+ if (isCustomVisible && visibleData && XEUtils.isBoolean(visibleData[colKey])) {
1557
1589
  column.visible = visibleData[colKey]
1558
1590
  }
1591
+ if (isCustomAggFunc && aggFuncData && (aggregateConfig || rowGroupConfig) && aggFuncData[colKey]) {
1592
+ column.aggFunc = aggFuncData[colKey]
1593
+ }
1594
+ if (isCustomAggGroup && aggGroupData && aggGroupData[colKey]) {
1595
+ aggGroupConfs.push({ field: column.field })
1596
+ }
1597
+ colKeyMaps[colKey] = column
1598
+ allCols.push(column)
1559
1599
  })
1600
+ if ((aggregateConfig || rowGroupConfig) && aggGroupConfs.length) {
1601
+ const groupRest = handleGroupData(internalData.tableFullData, aggGroupConfs)
1602
+ internalData.tableFullTreeData = []
1603
+ internalData.tableFullGroupData = groupRest.treeData
1604
+ reactData.isRowGroupStatus = true
1605
+ reactData.rowGroupList = aggGroupConfs
1606
+ $xeTable.cacheRowMap(false)
1607
+ }
1560
1608
  // 如果自定义了顺序
1561
- if (hasCustomSort) {
1562
- collectColumn = XEUtils.orderBy(collectColumn, 'renderSortNumber')
1563
- internalData.collectColumn = collectColumn
1564
- internalData.tableFullColumn = getColumnList(collectColumn)
1609
+ if (isCustomSort && sortData) {
1610
+ allCols.forEach(column => {
1611
+ const colKey = column.getKey()
1612
+ const scItem = sortColMaps[colKey]
1613
+ if (scItem) {
1614
+ const parentColumn = scItem.pKey ? colKeyMaps[scItem.pKey] : null
1615
+ column.parentId = parentColumn ? parentColumn.id : null
1616
+ column.renderSortNumber = scItem.sNum
1617
+ }
1618
+ })
1619
+ const newCollectCols = XEUtils.toArrayTree(XEUtils.orderBy(allCols, 'renderSortNumber'), { key: 'id', parentKey: 'parentId', children: 'children' })
1620
+ internalData.collectColumn = newCollectCols
1621
+ internalData.tableFullColumn = getColumnList(newCollectCols)
1565
1622
  }
1566
1623
  reactData.isCustomStatus = true
1567
1624
  } else {
@@ -1583,8 +1640,9 @@ export default defineVxeComponent({
1583
1640
  const isCustomVisible = hangleStorageDefaultValue(storageOpts.visible, isAllCustom)
1584
1641
  const isCustomFixed = hangleStorageDefaultValue(storageOpts.fixed, isAllCustom)
1585
1642
  const isCustomSort = hangleStorageDefaultValue(storageOpts.sort, isAllCustom)
1643
+ const isCustomAggGroup = hangleStorageDefaultValue(storageOpts.aggGroup, isAllCustom)
1586
1644
  const isCustomAggFunc = hangleStorageDefaultValue(storageOpts.aggFunc, isAllCustom)
1587
- if (storage && (customConfig ? isEnableConf(customOpts) : customOpts.enabled) && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort || isCustomAggFunc)) {
1645
+ if (storage && (customConfig ? isEnableConf(customOpts) : customOpts.enabled) && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort || isCustomAggGroup || isCustomAggFunc)) {
1588
1646
  if (!tableId) {
1589
1647
  errLog('vxe.error.reqProp', ['id'])
1590
1648
  return
@@ -3256,18 +3314,18 @@ export default defineVxeComponent({
3256
3314
  }
3257
3315
 
3258
3316
  const handleUpdateRowGroup = (groupFields?: string[]) => {
3259
- const aggFields: string[] = []
3260
- const aggConfs: { field: string }[] = []
3317
+ const aggGroupFields: string[] = []
3318
+ const aggGroupConfs: { field: string }[] = []
3261
3319
  if (groupFields) {
3262
3320
  (XEUtils.isArray(groupFields) ? groupFields : [groupFields]).forEach(field => {
3263
- aggFields.push(field)
3264
- aggConfs.push({
3321
+ aggGroupFields.push(field)
3322
+ aggGroupConfs.push({
3265
3323
  field
3266
3324
  })
3267
3325
  })
3268
3326
  }
3269
- reactData.rowGroupList = aggConfs
3270
- reactData.aggHandleFields = aggFields
3327
+ reactData.rowGroupList = aggGroupConfs
3328
+ reactData.aggHandleFields = aggGroupFields
3271
3329
  handleUpdateAggValues()
3272
3330
  }
3273
3331
 
@@ -3639,15 +3697,6 @@ export default defineVxeComponent({
3639
3697
  $xeTable.closeTooltip()
3640
3698
  }
3641
3699
 
3642
- // 获取所有的列,排除分组
3643
- const getColumnList = (columns: VxeTableDefines.ColumnInfo[]) => {
3644
- const result: VxeTableDefines.ColumnInfo[] = []
3645
- columns.forEach((column) => {
3646
- result.push(...(column.children && column.children.length ? getColumnList(column.children) : [column]))
3647
- })
3648
- return result
3649
- }
3650
-
3651
3700
  const parseColumns = (isReset: boolean) => {
3652
3701
  // const { showOverflow } = props
3653
3702
  // const rowOpts = computeRowOpts.value
@@ -3667,7 +3716,7 @@ export default defineVxeComponent({
3667
3716
  if (parentColumn && parentColumn.fixed) {
3668
3717
  column.fixed = parentColumn.fixed
3669
3718
  }
3670
- if (parentColumn && column.fixed !== parentColumn.fixed) {
3719
+ if (parentColumn && (column.fixed || '') !== (parentColumn.fixed || '')) {
3671
3720
  errLog('vxe.error.groupFixed')
3672
3721
  }
3673
3722
  if (isColGroup) {
@@ -3771,22 +3820,26 @@ export default defineVxeComponent({
3771
3820
  return $xeTable.updateFooter()
3772
3821
  }
3773
3822
 
3774
- const initColumnSort = () => {
3823
+ const initColumnHierarchy = () => {
3775
3824
  const { collectColumn } = internalData
3776
- collectColumn.forEach((column, index) => {
3777
- const sortIndex = index + 1
3825
+ let sortIndex = 1
3826
+ XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
3827
+ const parentId = parentColumn ? parentColumn.id : null
3828
+ column.parentId = parentId
3829
+ column.defaultParentId = parentId
3778
3830
  column.sortNumber = sortIndex
3779
3831
  column.renderSortNumber = sortIndex
3832
+ sortIndex++
3780
3833
  })
3781
3834
  }
3782
3835
 
3783
- const handleColumn = (collectColumn: VxeTableDefines.ColumnInfo[]) => {
3836
+ const handleInitColumn = (collectColumn: VxeTableDefines.ColumnInfo[]) => {
3784
3837
  const expandOpts = computeExpandOpts.value
3785
3838
  internalData.collectColumn = collectColumn
3786
3839
  const tableFullColumn = getColumnList(collectColumn)
3787
3840
  internalData.tableFullColumn = tableFullColumn
3788
3841
  reactData.isColLoading = true
3789
- initColumnSort()
3842
+ initColumnHierarchy()
3790
3843
  return Promise.resolve(
3791
3844
  restoreCustomStorage()
3792
3845
  ).then(() => {
@@ -4529,7 +4582,7 @@ export default defineVxeComponent({
4529
4582
  loadColumn (columns) {
4530
4583
  const { lastScrollLeft, lastScrollTop } = internalData
4531
4584
  const collectColumn = XEUtils.mapTree(columns, column => reactive(Cell.createColumn($xeTable, column)))
4532
- return handleColumn(collectColumn).then(() => {
4585
+ return handleInitColumn(collectColumn).then(() => {
4533
4586
  let targetScrollLeft = lastScrollLeft
4534
4587
  let targetScrollTop = lastScrollTop
4535
4588
  const virtualXOpts = computeVirtualXOpts.value
@@ -6934,7 +6987,8 @@ export default defineVxeComponent({
6934
6987
  getCustomStoreData () {
6935
6988
  const { id } = props
6936
6989
  const customOpts = computeCustomOpts.value
6937
- const { collectColumn } = internalData
6990
+ const { isRowGroupStatus, rowGroupList } = reactData
6991
+ const { fullColumnFieldData, collectColumn } = internalData
6938
6992
  const { storage, checkMethod, storeOptions } = customOpts
6939
6993
  const isAllCustom = storage === true
6940
6994
  const storageOpts: VxeTableDefines.VxeTableCustomStorageObj = isAllCustom ? {} : Object.assign({}, storage || {}, storeOptions)
@@ -6942,17 +6996,20 @@ export default defineVxeComponent({
6942
6996
  const isCustomVisible = hangleStorageDefaultValue(storageOpts.visible, isAllCustom)
6943
6997
  const isCustomFixed = hangleStorageDefaultValue(storageOpts.fixed, isAllCustom)
6944
6998
  const isCustomSort = hangleStorageDefaultValue(storageOpts.sort, isAllCustom)
6999
+ const isCustomAggGroup = hangleStorageDefaultValue(storageOpts.aggGroup, isAllCustom)
6945
7000
  const isCustomAggFunc = hangleStorageDefaultValue(storageOpts.aggFunc, isAllCustom)
6946
7001
  const resizableData: Record<string, number> = {}
6947
- const sortData: Record<string, number> = {}
7002
+ const sortData: VxeTableDefines.CustomSortStoreObj[] = []
6948
7003
  const visibleData: Record<string, boolean> = {}
6949
7004
  const fixedData: Record<string, VxeColumnPropTypes.Fixed> = {}
7005
+ const aggGroupData: Record<string, boolean> = {}
6950
7006
  const aggFuncData: Record<string, VxeColumnPropTypes.AggFunc> = {}
6951
7007
  const storeData: VxeTableDefines.CustomStoreData = {
6952
7008
  resizableData: undefined,
6953
7009
  sortData: undefined,
6954
7010
  visibleData: undefined,
6955
7011
  fixedData: undefined,
7012
+ aggGroupData: undefined,
6956
7013
  aggFuncData: undefined
6957
7014
  }
6958
7015
  if (!id) {
@@ -6966,19 +7023,36 @@ export default defineVxeComponent({
6966
7023
  let hasFixed = 0
6967
7024
  let hasVisible = 0
6968
7025
  let hasAggFunc = 0
7026
+ const sortMaps: Record<string, VxeTableDefines.CustomSortStoreObj> = {}
6969
7027
  XEUtils.eachTree(collectColumn, (column, index, items, path, parentColumn) => {
6970
7028
  const colKey = column.getKey()
6971
7029
  if (!colKey) {
6972
7030
  errLog('vxe.error.reqProp', [`${column.getTitle() || column.type || ''} -> column.field=?`])
6973
7031
  return
6974
7032
  }
6975
- // 只支持一级
6976
- if (!parentColumn) {
7033
+ if (parentColumn) {
6977
7034
  if (isCustomSort) {
7035
+ const pColKey = parentColumn.getKey()
7036
+ const psObj = sortMaps[pColKey]
6978
7037
  hasSort = 1
6979
- sortData[colKey] = column.renderSortNumber
7038
+ if (psObj) {
7039
+ const sObj = { k: colKey }
7040
+ sortMaps[colKey] = sObj
7041
+ if (!psObj.c) {
7042
+ psObj.c = []
7043
+ }
7044
+ psObj.c.push(sObj)
7045
+ }
6980
7046
  }
6981
- if (isCustomFixed && column.fixed !== column.defaultFixed) {
7047
+ } else {
7048
+ if (isCustomSort) {
7049
+ hasSort = 1
7050
+ const sObj = { k: colKey }
7051
+ sortMaps[colKey] = sObj
7052
+ sortData.push(sObj)
7053
+ }
7054
+ // 只支持一级
7055
+ if (isCustomFixed && (column.fixed || '') !== (column.defaultFixed || '')) {
6982
7056
  hasFixed = 1
6983
7057
  fixedData[colKey] = column.fixed
6984
7058
  }
@@ -6996,7 +7070,7 @@ export default defineVxeComponent({
6996
7070
  visibleData[colKey] = true
6997
7071
  }
6998
7072
  }
6999
- if (isCustomAggFunc && column.aggFunc !== column.defaultAggFunc) {
7073
+ if (isCustomAggFunc && (column.aggFunc || '') !== (column.defaultAggFunc || '')) {
7000
7074
  hasAggFunc = 1
7001
7075
  aggFuncData[colKey] = column.aggFunc
7002
7076
  }
@@ -7013,6 +7087,15 @@ export default defineVxeComponent({
7013
7087
  if (hasVisible) {
7014
7088
  storeData.visibleData = visibleData
7015
7089
  }
7090
+ if (isCustomAggGroup && isRowGroupStatus) {
7091
+ rowGroupList.forEach(aggConf => {
7092
+ const colRest = fullColumnFieldData[aggConf.field]
7093
+ if (colRest) {
7094
+ aggGroupData[colRest.column.getKey()] = true
7095
+ }
7096
+ })
7097
+ storeData.aggGroupData = aggGroupData
7098
+ }
7016
7099
  if (hasAggFunc) {
7017
7100
  storeData.aggFuncData = aggFuncData
7018
7101
  }
@@ -8447,22 +8530,25 @@ export default defineVxeComponent({
8447
8530
  const isCustomVisible = hangleStorageDefaultValue(storageOpts.visible, isAllCustom)
8448
8531
  const isCustomFixed = hangleStorageDefaultValue(storageOpts.fixed, isAllCustom)
8449
8532
  const isCustomSort = hangleStorageDefaultValue(storageOpts.sort, isAllCustom)
8533
+ const isCustomAggGroup = hangleStorageDefaultValue(storageOpts.aggGroup, isAllCustom)
8450
8534
  const isCustomAggFunc = hangleStorageDefaultValue(storageOpts.aggFunc, isAllCustom)
8451
8535
  if (type !== 'reset') {
8452
8536
  // fix:修复拖动列宽,重置按钮无法点击的问题
8453
8537
  reactData.isCustomStatus = true
8454
8538
  }
8455
- if (storage && (customConfig ? isEnableConf(customOpts) : customOpts.enabled) && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort || isCustomAggFunc)) {
8539
+ if (storage && (customConfig ? isEnableConf(customOpts) : customOpts.enabled) && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort || isCustomAggGroup || isCustomAggFunc)) {
8456
8540
  if (!tableId) {
8457
8541
  errLog('vxe.error.reqProp', ['id'])
8458
8542
  return nextTick()
8459
8543
  }
8460
- const storeData = type === 'reset'
8544
+ const storeData: VxeTableDefines.CustomStoreData = type === 'reset'
8461
8545
  ? {
8462
8546
  resizableData: {},
8463
- sortData: {},
8547
+ sortData: [],
8464
8548
  visibleData: {},
8465
- fixedData: {}
8549
+ fixedData: {},
8550
+ aggGroupData: {},
8551
+ aggFuncData: {}
8466
8552
  }
8467
8553
  : tableMethods.getCustomStoreData()
8468
8554
  if (updateStore) {
@@ -11771,7 +11857,7 @@ export default defineVxeComponent({
11771
11857
  staticColumnFlag.value++
11772
11858
  })
11773
11859
  watch(staticColumnFlag, () => {
11774
- handleColumn(XEUtils.clone(reactData.staticColumns))
11860
+ nextTick(() => handleInitColumn(XEUtils.clone(reactData.staticColumns)))
11775
11861
  })
11776
11862
 
11777
11863
  const tableColumnFlag = ref(0)
@@ -342,6 +342,15 @@ export function isColumnInfo (column: any): column is ColumnInfo {
342
342
  return column && (column.constructor === ColumnInfo || column instanceof ColumnInfo)
343
343
  }
344
344
 
345
+ // 获取所有的列,排除分组
346
+ export function getColumnList (columns: VxeTableDefines.ColumnInfo[]) {
347
+ const result: VxeTableDefines.ColumnInfo[] = []
348
+ columns.forEach((column) => {
349
+ result.push(...(column.children && column.children.length ? getColumnList(column.children) : [column]))
350
+ })
351
+ return result
352
+ }
353
+
345
354
  export function createColumn ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, options: VxeTableDefines.ColumnOptions | VxeTableDefines.ColumnInfo, renderOptions: any): any {
346
355
  return isColumnInfo(options) ? options : reactive(new ColumnInfo($xeTable, options, renderOptions))
347
356
  }
@@ -369,6 +378,7 @@ export function assembleColumn ($xeTable: VxeTableConstructor & VxeTablePrivateM
369
378
  const parentColumn = colgroup ? colgroup.columnConfig : null
370
379
  const parentCols = parentColumn ? parentColumn.children : staticColumns
371
380
  if (parentElem && parentCols) {
381
+ column.defaultParentId = parentColumn ? parentColumn.id : null
372
382
  parentCols.splice(XEUtils.arrayIndexOf(parentElem.children, elem), 0, column)
373
383
  reactData.staticColumns = staticColumns.slice(0)
374
384
  }