vxe-table 3.12.7 → 3.12.9

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.
@@ -88,11 +88,6 @@ const convertHeaderColumnToRows = originColumns => {
88
88
  return rows;
89
89
  };
90
90
  exports.convertHeaderColumnToRows = convertHeaderColumnToRows;
91
- const lineOffsetSizes = {
92
- mini: 3,
93
- small: 2,
94
- medium: 1
95
- };
96
91
  function restoreScrollLocation($xeTable, scrollLeft, scrollTop) {
97
92
  const internalData = $xeTable;
98
93
  return $xeTable.clearScroll().then(() => {
@@ -288,6 +283,11 @@ function getColReMinWidth(params) {
288
283
  }
289
284
  return mWidth;
290
285
  }
286
+ const lineOffsetSizes = {
287
+ mini: 3,
288
+ small: 2,
289
+ medium: 1
290
+ };
291
291
  function countTreeExpand(prevRow, params) {
292
292
  let count = 1;
293
293
  if (!prevRow) {
@@ -296,11 +296,13 @@ function countTreeExpand(prevRow, params) {
296
296
  const {
297
297
  $table
298
298
  } = params;
299
+ const treeOpts = $table.computeTreeOpts;
299
300
  const {
300
- treeOpts
301
- } = $table;
301
+ transform,
302
+ mapChildrenField
303
+ } = treeOpts;
302
304
  const childrenField = treeOpts.children || treeOpts.childrenField;
303
- const rowChildren = prevRow[childrenField];
305
+ const rowChildren = prevRow[transform ? mapChildrenField : childrenField];
304
306
  if (rowChildren && $table.isTreeExpandByRow(prevRow)) {
305
307
  for (let index = 0; index < rowChildren.length; index++) {
306
308
  count += countTreeExpand(rowChildren[index], params);
@@ -308,19 +310,23 @@ function countTreeExpand(prevRow, params) {
308
310
  }
309
311
  return count;
310
312
  }
311
- function getOffsetSize($xetable) {
312
- const vSize = $xetable.computeSize;
313
- return lineOffsetSizes[vSize] || 0;
313
+ function getOffsetSize($xeTable) {
314
+ const vSize = $xeTable.computeSize;
315
+ if (vSize) {
316
+ return lineOffsetSizes[vSize] || 0;
317
+ }
318
+ return 0;
314
319
  }
315
- function calcTreeLine(params, items, rIndex) {
320
+ function calcTreeLine(params, prevRow) {
316
321
  const {
317
322
  $table
318
323
  } = params;
324
+ const tableReactData = $table;
319
325
  let expandSize = 1;
320
- if (rIndex) {
321
- expandSize = countTreeExpand(items[rIndex - 1], params);
326
+ if (prevRow) {
327
+ expandSize = countTreeExpand(prevRow, params);
322
328
  }
323
- return $table.rowHeight * expandSize - (rIndex ? 1 : 12 - getOffsetSize($table));
329
+ return tableReactData.rowHeight * expandSize - (prevRow ? 1 : 12 - getOffsetSize($table));
324
330
  }
325
331
  function mergeBodyMethod(mergeList, _rowIndex, _columnIndex) {
326
332
  for (let mIndex = 0; mIndex < mergeList.length; mIndex++) {
@@ -405,6 +411,9 @@ function rowToVisible($xeTable, row) {
405
411
  scrollYStore,
406
412
  fullAllDataRowIdData
407
413
  } = internalData;
414
+ const {
415
+ rowHeight
416
+ } = scrollYStore;
408
417
  const {
409
418
  leftList,
410
419
  rightList
@@ -437,19 +446,19 @@ function rowToVisible($xeTable, row) {
437
446
  // 如果是虚拟渲染滚动
438
447
  if (scrollYLoad) {
439
448
  if (showOverflow) {
440
- return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * scrollYStore.rowHeight);
449
+ return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * rowHeight);
441
450
  }
442
451
  let scrollTop = 0;
443
- const rest = fullAllDataRowIdData[rowid];
444
- const rHeight = rest ? rest.height : 0;
452
+ const rowRest = fullAllDataRowIdData[rowid];
453
+ const rHeight = rowRest ? rowRest.height || rowHeight : rowHeight;
445
454
  for (let i = 0; i < afterFullData.length; i++) {
446
455
  const currRow = afterFullData[i];
447
456
  const currRowid = getRowid($xeTable, currRow);
448
457
  if (currRow === row || currRowid === rowid) {
449
458
  break;
450
459
  }
451
- const rest = fullAllDataRowIdData[currRowid];
452
- scrollTop += rest ? rest.height : 0;
460
+ const rowRest = fullAllDataRowIdData[currRowid];
461
+ scrollTop += rowRest ? rowRest.height || rowHeight : rowHeight;
453
462
  }
454
463
  if (scrollTop < bodyScrollTop) {
455
464
  return $xeTable.scrollTo(null, scrollTop - offsetFixedLeft - 1);
@@ -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.destroyColumn=destroyColumn,exports.getCellValue=getCellValue,exports.getColReMinWidth=getColReMinWidth,exports.getOffsetSize=getOffsetSize,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=handleFieldOrColumn,exports.isColumnInfo=isColumnInfo,exports.mergeBodyMethod=mergeBodyMethod,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq;var _xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let getAllConvertColumns=(e,l)=>{let t=[];return e.forEach(e=>{e.parentId=l?l.id:null,e.visible&&(e.children&&e.children.length&&e.children.some(e=>e.visible)?(t.push(e),t.push(...getAllConvertColumns(e.children,e))):t.push(e))}),t},convertHeaderColumnToRows=e=>{let l=1,r=(t,e)=>{if(e&&(t.level=e.level+1,l<t.level)&&(l=t.level),t.children&&t.children.length&&t.children.some(e=>e.visible)){let l=0;t.children.forEach(e=>{e.visible&&(r(e,t),l+=e.colSpan)}),t.colSpan=l}else t.colSpan=1},t=(e.forEach(e=>{e.level=1,r(e)}),[]);for(let e=0;e<l;e++)t.push([]);return getAllConvertColumns(e).forEach(e=>{e.children&&e.children.length&&e.children.some(e=>e.visible)?e.rowSpan=1:e.rowSpan=l-e.level+1,t[e.level-1].push(e)}),t},lineOffsetSizes=(exports.convertHeaderColumnToRows=convertHeaderColumnToRows,{mini:3,small:2,medium:1});function restoreScrollLocation(e,l,t){let r=e;return e.clearScroll().then(()=>{if(l||t)return r.lastScrollLeft=0,r.lastScrollTop=0,r.inVirtualScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,r.bodyScrollType="",e.scrollTo(l,t)})}function toTreePathSeq(e){return e.map((e,l)=>l%2==0?Number(e)+1:".").join("")}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function getRowkey(e){return e.rowOpts.keyField||e.rowId||"_X_ROW_KEY"}function getRowid(e,l){l=_xeUtils.default.get(l,getRowkey(e));return _xeUtils.default.eqNull(l)?"":encodeURIComponent(l)}function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElementMarginWidth(e){var l,t;return e?(t=getComputedStyle(e),l=_xeUtils.default.toNumber(t.marginLeft),t=_xeUtils.default.toNumber(t.marginRight),e.offsetWidth+l+t):0}function handleFieldOrColumn(e,l){return l?_xeUtils.default.isString(l)?e.getColumnByField(l):l:null}function assembleColumn(e){var{$el:e,$xetable:l,$xecolumn:t,columnConfig:r}=e,o=t?t.columnConfig:null;o?("development"===process.env.NODE_ENV&&("vxe-table-column"===t.$options._componentTag?(0,_log.errLog)("vxe.error.groupTag",[`<vxe-table-colgroup title=${t.title} ...>`,`<vxe-table-column title=${t.title} ...>`]):"vxe-column"===t.$options._componentTag&&(0,_log.warnLog)("vxe.error.groupTag",[`<vxe-colgroup title=${t.title} ...>`,`<vxe-column title=${t.title} ...>`])),o.children||(o.children=[]),o.children.splice(_xeUtils.default.arrayIndexOf(t.$el.children,e),0,r)):l.staticColumns.splice(_xeUtils.default.arrayIndexOf(l.$refs.hideColumn.children,e),0,r)}function destroyColumn(e){let{$xetable:l,columnConfig:t}=e;e=_xeUtils.default.findTree(l.staticColumns,e=>e===t);e&&e.items.splice(e.index,1)}function getRootColumn(e,l){var t=e.fullColumnIdData;if(!l)return null;let r=l.parentId;for(;t[r];){let e=t[r].column;if(!(r=e.parentId))return e}return l}function queryCellElement(e,l){return e.querySelector(".vxe-cell"+l)}function toFilters(e){return e&&_xeUtils.default.isArray(e)?e.map(({label:e,value:l,data:t,resetValue:r,checked:o})=>({label:e,value:l,data:t,resetValue:r,checked:!!o,_checked:!!o})):e}function getColReMinWidth(e){var{$table:l,column:t,cell:r}=e,{showHeaderOverflow:o,resizableOpts:n}=l,n=n.minWidth;if(n){e=_xeUtils.default.isFunction(n)?n(e):n;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var i,u,a,s,{showHeaderOverflow:n,minWidth:e}=t,t=_xeUtils.default.isUndefined(n)||_xeUtils.default.isNull(n)?o:n,o="title"===t||(!0===t||"tooltip"===t)||"ellipsis"===t;let c=_xeUtils.default.floor(1.6*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize(queryCellElement(r,"")));if(o&&(n=getPaddingLeftRightSize(queryCellElement(r,">.vxe-cell--drag-handle")),t=getPaddingLeftRightSize(queryCellElement(r,">.vxe-cell--checkbox")),o=getElementMarginWidth(queryCellElement(r,">.vxe-cell--required-icon")),i=getElementMarginWidth(queryCellElement(r,">.vxe-cell--edit-icon")),u=getElementMarginWidth(queryCellElement(r,">.vxe-cell-title-prefix-icon")),a=getElementMarginWidth(queryCellElement(r,">.vxe-cell-title-suffix-icon")),s=getElementMarginWidth(queryCellElement(r,">.vxe-cell--sort")),r=getElementMarginWidth(queryCellElement(r,">.vxe-cell--filter")),c+=n+t+o+i+u+a+r+s),e){n=l.$refs.tableBody,t=n?n.$el:null;if(t){if((0,_dom.isScale)(e))return o=(t.clientWidth-1)/100,Math.max(c,Math.floor(_xeUtils.default.toInteger(e)*o));if((0,_dom.isPx)(e))return Math.max(c,_xeUtils.default.toInteger(e))}}return c}function countTreeExpand(e,l){let t=1;if(e){var r=l.$table,o=r.treeOpts,n=e[o.children||o.childrenField];if(n&&r.isTreeExpandByRow(e))for(let e=0;e<n.length;e++)t+=countTreeExpand(n[e],l)}return t}function getOffsetSize(e){e=e.computeSize;return lineOffsetSizes[e]||0}function calcTreeLine(e,l,t){var r=e.$table;let o=1;return t&&(o=countTreeExpand(l[t-1],e)),r.rowHeight*o-(t?1:12-getOffsetSize(r))}function mergeBodyMethod(l,t,r){for(let e=0;e<l.length;e++){var{row:o,col:n,rowspan:i,colspan:u}=l[e];if(-1<n&&-1<o&&i&&u){if(o===t&&n===r)return{rowspan:i,colspan:u};if(o<=t&&t<o+i&&n<=r&&r<n+u)return{rowspan:0,colspan:0}}}}function getCellValue(e,l){return _xeUtils.default.get(e,l.field)}function setCellValue(e,l,t){return _xeUtils.default.set(e,l.field,t)}function clearTableDefaultStatus(e){return e.initStatus=!1,e.clearSort(),e.clearCurrentRow(),e.clearCurrentColumn(),e.clearRadioRow(),e.clearRadioReserve(),e.clearCheckboxRow(),e.clearCheckboxReserve(),e.clearRowExpand(),e.clearTreeExpand(),e.clearTreeExpandReserve(),e.clearEdit&&e.clearEdit(),e.clearSelected&&(e.keyboardConfig||e.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&e.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function isColumnInfo(e){return e instanceof _columnInfo.ColumnInfo}function createColumn(e,l,t){return isColumnInfo(l)?l:new _columnInfo.ColumnInfo(e,l,t)}function rowToVisible(t,r){var e=t.showOverflow,o=t.$refs.tableBody,{columnStore:n,scrollYLoad:l}=t,{afterFullData:i,scrollYStore:u,fullAllDataRowIdData:a}=t,{leftList:n,rightList:s}=n,o=o?o.$el:null,c=getRowid(t,r);let d=0,f=(n.forEach(e=>{d+=e.renderWidth}),0);if(s.forEach(e=>{f+=e.renderWidth}),o){n=o.clientHeight,s=o.scrollTop,o=o.querySelector(`[rowid="${c}"]`);if(o){var m=o.offsetParent,m=o.offsetTop+(m?m.offsetTop:0),o=o.clientHeight;if(m<s||s+n<m)return t.scrollTo(null,m);if(n+s<=m+o)return t.scrollTo(null,s+o)}else if(l){if(e)return t.scrollTo(null,(t.findRowIndexOf(i,r)-1)*u.rowHeight);let l=0;m=a[c],o=m?m.height:0;for(let e=0;e<i.length;e++){var g=i[e],h=getRowid(t,g);if(g===r||h===c)break;g=a[h];l+=g?g.height:0}return l<s?t.scrollTo(null,l-d-1):t.scrollTo(null,l+o-(n-f-1))}}return Promise.resolve()}function colToVisible(o,n,l){var{columnStore:i,scrollXLoad:u,visibleColumn:a}=o,s=o.$refs.tableBody,{leftList:i,rightList:c}=i,s=s?s.$el:null;if(!n.fixed){let t=0,r=(i.forEach(e=>{t+=e.renderWidth}),0);if(c.forEach(e=>{r+=e.renderWidth}),s){i=s.clientWidth,c=s.scrollLeft;let e=null;if(l&&(l=getRowid(o,l),e=s.querySelector(`[rowid="${l}"] .`+n.id)),e=e||s.querySelector("."+n.id)){l=e.offsetParent,s=e.offsetLeft+(l?l.offsetLeft:0),l=e.clientWidth;if(s<c+t)return o.scrollTo(s-t-1);if(s+l-c>i-r)return o.scrollTo(s+l-(i-r-1))}else if(u){let l=0;s=n.renderWidth;for(let e=0;e<a.length&&a[e]!==n;e++)l+=a[e].renderWidth;return l<c?o.scrollTo(l-t-1):o.scrollTo(l+s-(i-r-1))}}}return Promise.resolve()}
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.destroyColumn=destroyColumn,exports.getCellValue=getCellValue,exports.getColReMinWidth=getColReMinWidth,exports.getOffsetSize=getOffsetSize,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=handleFieldOrColumn,exports.isColumnInfo=isColumnInfo,exports.mergeBodyMethod=mergeBodyMethod,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq;var _xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let getAllConvertColumns=(e,l)=>{let t=[];return e.forEach(e=>{e.parentId=l?l.id:null,e.visible&&(e.children&&e.children.length&&e.children.some(e=>e.visible)?(t.push(e),t.push(...getAllConvertColumns(e.children,e))):t.push(e))}),t},convertHeaderColumnToRows=e=>{let l=1,r=(t,e)=>{if(e&&(t.level=e.level+1,l<t.level)&&(l=t.level),t.children&&t.children.length&&t.children.some(e=>e.visible)){let l=0;t.children.forEach(e=>{e.visible&&(r(e,t),l+=e.colSpan)}),t.colSpan=l}else t.colSpan=1},t=(e.forEach(e=>{e.level=1,r(e)}),[]);for(let e=0;e<l;e++)t.push([]);return getAllConvertColumns(e).forEach(e=>{e.children&&e.children.length&&e.children.some(e=>e.visible)?e.rowSpan=1:e.rowSpan=l-e.level+1,t[e.level-1].push(e)}),t};function restoreScrollLocation(e,l,t){let r=e;return e.clearScroll().then(()=>{if(l||t)return r.lastScrollLeft=0,r.lastScrollTop=0,r.inVirtualScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,r.bodyScrollType="",e.scrollTo(l,t)})}function toTreePathSeq(e){return e.map((e,l)=>l%2==0?Number(e)+1:".").join("")}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function getRowkey(e){return e.rowOpts.keyField||e.rowId||"_X_ROW_KEY"}function getRowid(e,l){l=_xeUtils.default.get(l,getRowkey(e));return _xeUtils.default.eqNull(l)?"":encodeURIComponent(l)}function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElementMarginWidth(e){var l,t;return e?(t=getComputedStyle(e),l=_xeUtils.default.toNumber(t.marginLeft),t=_xeUtils.default.toNumber(t.marginRight),e.offsetWidth+l+t):0}function handleFieldOrColumn(e,l){return l?_xeUtils.default.isString(l)?e.getColumnByField(l):l:null}function assembleColumn(e){var{$el:e,$xetable:l,$xecolumn:t,columnConfig:r}=e,o=t?t.columnConfig:null;o?("development"===process.env.NODE_ENV&&("vxe-table-column"===t.$options._componentTag?(0,_log.errLog)("vxe.error.groupTag",[`<vxe-table-colgroup title=${t.title} ...>`,`<vxe-table-column title=${t.title} ...>`]):"vxe-column"===t.$options._componentTag&&(0,_log.warnLog)("vxe.error.groupTag",[`<vxe-colgroup title=${t.title} ...>`,`<vxe-column title=${t.title} ...>`])),o.children||(o.children=[]),o.children.splice(_xeUtils.default.arrayIndexOf(t.$el.children,e),0,r)):l.staticColumns.splice(_xeUtils.default.arrayIndexOf(l.$refs.hideColumn.children,e),0,r)}function destroyColumn(e){let{$xetable:l,columnConfig:t}=e;e=_xeUtils.default.findTree(l.staticColumns,e=>e===t);e&&e.items.splice(e.index,1)}function getRootColumn(e,l){var t=e.fullColumnIdData;if(!l)return null;let r=l.parentId;for(;t[r];){let e=t[r].column;if(!(r=e.parentId))return e}return l}function queryCellElement(e,l){return e.querySelector(".vxe-cell"+l)}function toFilters(e){return e&&_xeUtils.default.isArray(e)?e.map(({label:e,value:l,data:t,resetValue:r,checked:o})=>({label:e,value:l,data:t,resetValue:r,checked:!!o,_checked:!!o})):e}function getColReMinWidth(e){var{$table:l,column:t,cell:r}=e,{showHeaderOverflow:o,resizableOpts:n}=l,n=n.minWidth;if(n){e=_xeUtils.default.isFunction(n)?n(e):n;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var i,u,a,s,{showHeaderOverflow:n,minWidth:e}=t,t=_xeUtils.default.isUndefined(n)||_xeUtils.default.isNull(n)?o:n,o="title"===t||(!0===t||"tooltip"===t)||"ellipsis"===t;let c=_xeUtils.default.floor(1.6*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize(queryCellElement(r,"")));if(o&&(n=getPaddingLeftRightSize(queryCellElement(r,">.vxe-cell--drag-handle")),t=getPaddingLeftRightSize(queryCellElement(r,">.vxe-cell--checkbox")),o=getElementMarginWidth(queryCellElement(r,">.vxe-cell--required-icon")),i=getElementMarginWidth(queryCellElement(r,">.vxe-cell--edit-icon")),u=getElementMarginWidth(queryCellElement(r,">.vxe-cell-title-prefix-icon")),a=getElementMarginWidth(queryCellElement(r,">.vxe-cell-title-suffix-icon")),s=getElementMarginWidth(queryCellElement(r,">.vxe-cell--sort")),r=getElementMarginWidth(queryCellElement(r,">.vxe-cell--filter")),c+=n+t+o+i+u+a+r+s),e){n=l.$refs.tableBody,t=n?n.$el:null;if(t){if((0,_dom.isScale)(e))return o=(t.clientWidth-1)/100,Math.max(c,Math.floor(_xeUtils.default.toInteger(e)*o));if((0,_dom.isPx)(e))return Math.max(c,_xeUtils.default.toInteger(e))}}return c}exports.convertHeaderColumnToRows=convertHeaderColumnToRows;let lineOffsetSizes={mini:3,small:2,medium:1};function countTreeExpand(e,l){let t=1;if(e){var r=l.$table,o=r.computeTreeOpts,{transform:n,mapChildrenField:i}=o,o=o.children||o.childrenField,u=e[n?i:o];if(u&&r.isTreeExpandByRow(e))for(let e=0;e<u.length;e++)t+=countTreeExpand(u[e],l)}return t}function getOffsetSize(e){e=e.computeSize;return e&&lineOffsetSizes[e]||0}function calcTreeLine(e,l){var t=e.$table,r=t;let o=1;return l&&(o=countTreeExpand(l,e)),r.rowHeight*o-(l?1:12-getOffsetSize(t))}function mergeBodyMethod(l,t,r){for(let e=0;e<l.length;e++){var{row:o,col:n,rowspan:i,colspan:u}=l[e];if(-1<n&&-1<o&&i&&u){if(o===t&&n===r)return{rowspan:i,colspan:u};if(o<=t&&t<o+i&&n<=r&&r<n+u)return{rowspan:0,colspan:0}}}}function getCellValue(e,l){return _xeUtils.default.get(e,l.field)}function setCellValue(e,l,t){return _xeUtils.default.set(e,l.field,t)}function clearTableDefaultStatus(e){return e.initStatus=!1,e.clearSort(),e.clearCurrentRow(),e.clearCurrentColumn(),e.clearRadioRow(),e.clearRadioReserve(),e.clearCheckboxRow(),e.clearCheckboxReserve(),e.clearRowExpand(),e.clearTreeExpand(),e.clearTreeExpandReserve(),e.clearEdit&&e.clearEdit(),e.clearSelected&&(e.keyboardConfig||e.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&e.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function isColumnInfo(e){return e instanceof _columnInfo.ColumnInfo}function createColumn(e,l,t){return isColumnInfo(l)?l:new _columnInfo.ColumnInfo(e,l,t)}function rowToVisible(t,r){var e=t.showOverflow,o=t.$refs.tableBody,{columnStore:n,scrollYLoad:l}=t,{afterFullData:i,scrollYStore:u,fullAllDataRowIdData:a}=t,s=u.rowHeight,{leftList:u,rightList:n}=n,o=o?o.$el:null,c=getRowid(t,r);let d=0,f=(u.forEach(e=>{d+=e.renderWidth}),0);if(n.forEach(e=>{f+=e.renderWidth}),o){u=o.clientHeight,n=o.scrollTop,o=o.querySelector(`[rowid="${c}"]`);if(o){var m=o.offsetParent,m=o.offsetTop+(m?m.offsetTop:0),o=o.clientHeight;if(m<n||n+u<m)return t.scrollTo(null,m);if(u+n<=m+o)return t.scrollTo(null,n+o)}else if(l){if(e)return t.scrollTo(null,(t.findRowIndexOf(i,r)-1)*s);let l=0;m=a[c],o=m&&m.height||s;for(let e=0;e<i.length;e++){var g=i[e],h=getRowid(t,g);if(g===r||h===c)break;g=a[h];l+=g&&g.height||s}return l<n?t.scrollTo(null,l-d-1):t.scrollTo(null,l+o-(u-f-1))}}return Promise.resolve()}function colToVisible(o,n,l){var{columnStore:i,scrollXLoad:u,visibleColumn:a}=o,s=o.$refs.tableBody,{leftList:i,rightList:c}=i,s=s?s.$el:null;if(!n.fixed){let t=0,r=(i.forEach(e=>{t+=e.renderWidth}),0);if(c.forEach(e=>{r+=e.renderWidth}),s){i=s.clientWidth,c=s.scrollLeft;let e=null;if(l&&(l=getRowid(o,l),e=s.querySelector(`[rowid="${l}"] .`+n.id)),e=e||s.querySelector("."+n.id)){l=e.offsetParent,s=e.offsetLeft+(l?l.offsetLeft:0),l=e.clientWidth;if(s<c+t)return o.scrollTo(s-t-1);if(s+l-c>i-r)return o.scrollTo(s+l-(i-r-1))}else if(u){let l=0;s=n.renderWidth;for(let e=0;e<a.length&&a[e]!==n;e++)l+=a[e].renderWidth;return l<c?o.scrollTo(l-t-1):o.scrollTo(l+s-(i-r-1))}}}return Promise.resolve()}
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.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 = "3.12.7";
16
+ const version = exports.version = "3.12.9";
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.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="3.12.7",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{maxFixedSize:4},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,iconLayout:"vertical"},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0},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:{isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{gt:60},scrollY:{gt:100}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showResponseMsg:!0,showActiveMsg:!0,props:{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_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",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_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",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,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.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="3.12.9",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{maxFixedSize:4},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,iconLayout:"vertical"},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0},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:{isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{gt:60},scrollY:{gt:100}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showResponseMsg:!0,showActiveMsg:!0,props:{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_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",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_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",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,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${"3.12.7"}`;
11
+ const version = `table v${"3.12.9"}`;
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 v3.12.7",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 v3.12.9",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": "3.12.7",
3
+ "version": "3.12.9",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -28,7 +28,7 @@
28
28
  "style": "lib/style.css",
29
29
  "typings": "types/index.d.ts",
30
30
  "dependencies": {
31
- "vxe-pc-ui": "^3.3.72"
31
+ "vxe-pc-ui": "^3.3.73"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/plugin-transform-modules-commonjs": "^7.25.7",
@@ -6,6 +6,8 @@ import { getOffsetSize, calcTreeLine, mergeBodyMethod, getRowid } from './util'
6
6
  import { updateCellTitle, setScrollTop, setScrollLeft } from '../../ui/src/dom'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
 
9
+ import type { VxeTableConstructor, TableInternalData, VxeTablePrivateMethods } from '../../../types'
10
+
9
11
  const { getI18n, renderer, renderEmptyElement } = VxeUI
10
12
 
11
13
  const renderType = 'body'
@@ -15,24 +17,28 @@ function isVMScrollProcess ($xetable: any) {
15
17
  return $xetable._isResize || ($xetable.lastScrollTime && Date.now() < $xetable.lastScrollTime + $xetable.delayHover)
16
18
  }
17
19
 
18
- function renderLine (h: CreateElement, _vm: any, $xetable: any, params: any) {
20
+ function renderLine (h: CreateElement, _vm: any, $xeTable: VxeTableConstructor & VxeTablePrivateMethods, params: any) {
21
+ const tableProps = $xeTable
22
+ const tableInternalData = $xeTable as unknown as TableInternalData
23
+
19
24
  const { row, column } = params
20
- const { afterFullData, treeOpts, treeConfig, fullAllDataRowIdData } = $xetable
25
+ const { afterFullData } = tableInternalData
26
+ const { treeConfig } = tableProps
27
+ const treeOpts = $xeTable.computeTreeOpts
21
28
  const { slots, treeNode } = column
22
- const rowid = getRowid($xetable, row)
29
+ const { fullAllDataRowIdData } = tableInternalData
30
+ if (slots && slots.line) {
31
+ return $xeTable.callSlot(slots.line, params, h)
32
+ }
33
+ const rowid = getRowid($xeTable, row)
23
34
  const rest = fullAllDataRowIdData[rowid]
24
35
  let rLevel = 0
25
- let rIndex = 0
26
- let items = []
36
+ let prevRow = null
27
37
  if (rest) {
28
38
  rLevel = rest.level
29
- rIndex = rest._index
30
- items = rest.items
31
- }
32
- if (slots && slots.line) {
33
- return $xetable.callSlot(slots.line, params, h)
39
+ prevRow = rest.items[rest._index - 1]
34
40
  }
35
- const isFirstRow = $xetable.eqRow(afterFullData[0], row)
41
+ const isFirstRow = $xeTable.eqRow(afterFullData[0], row)
36
42
  if (treeConfig && treeNode && (treeOpts.showLine || treeOpts.line)) {
37
43
  return [
38
44
  h('div', {
@@ -41,8 +47,8 @@ function renderLine (h: CreateElement, _vm: any, $xetable: any, params: any) {
41
47
  h('div', {
42
48
  class: 'vxe-tree--line',
43
49
  style: {
44
- height: `${isFirstRow ? 1 : calcTreeLine(params, items, rIndex)}px`,
45
- left: `${(rLevel * treeOpts.indent) + (rLevel ? 2 - getOffsetSize($xetable) : 0) + 16}px`
50
+ height: `${isFirstRow ? 1 : calcTreeLine(params, prevRow)}px`,
51
+ left: `${(rLevel * treeOpts.indent) + (rLevel ? 2 - getOffsetSize($xeTable) : 0) + 16}px`
46
52
  }
47
53
  })
48
54
  ])
@@ -50,12 +50,14 @@ function renderTitleSuffixIcon (h: CreateElement, params: VxeTableDefines.CellRe
50
50
 
51
51
  function renderCellDragIcon (h: CreateElement, params: VxeTableDefines.CellRenderBodyParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
52
52
  const { $table } = params
53
+ const tableSlots = $table.$scopedSlots
53
54
  const tableProps = $table
54
55
  const { dragConfig } = tableProps
55
56
  const rowDragOpts = $table.computeRowDragOpts
56
57
  const { icon, trigger, disabledMethod } = rowDragOpts
57
58
  const rDisabledMethod = disabledMethod || (dragConfig ? dragConfig.rowDisabledMethod : null)
58
59
  const isDisabled = rDisabledMethod && rDisabledMethod(params)
60
+ const rowDragIconSlot = tableSlots.rowDragIcon || tableSlots['row-drag-icon']
59
61
  const ons: Record<string, any> = {}
60
62
  if (trigger !== 'cell') {
61
63
  ons.mousedown = (evnt: MouseEvent) => {
@@ -71,11 +73,13 @@ function renderCellDragIcon (h: CreateElement, params: VxeTableDefines.CellRende
71
73
  'is--disabled': isDisabled
72
74
  }],
73
75
  on: ons
74
- }, [
75
- h('i', {
76
- class: icon || (dragConfig ? dragConfig.rowIcon : '') || getIcon().TABLE_DRAG_ROW
77
- })
78
- ])
76
+ }, rowDragIconSlot
77
+ ? $table.callSlot(rowDragIconSlot as any, params, h)
78
+ : [
79
+ h('i', {
80
+ class: icon || (dragConfig ? dragConfig.rowIcon : '') || getIcon().TABLE_DRAG_ROW
81
+ })
82
+ ])
79
83
  }
80
84
 
81
85
  function renderCellBaseVNs (h: CreateElement, params: VxeTableDefines.CellRenderBodyParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }, content: VxeComponentSlotType | VxeComponentSlotType[]) {
@@ -106,12 +110,15 @@ function renderCellBaseVNs (h: CreateElement, params: VxeTableDefines.CellRender
106
110
 
107
111
  function renderHeaderCellDragIcon (h: CreateElement, params: VxeTableDefines.CellRenderHeaderParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
108
112
  const { $table, column } = params
113
+ const tableSlots = $table.$scopedSlots
114
+ const { slots } = column
109
115
  const columnOpts = $table.computeColumnOpts
110
116
  const columnDragOpts = $table.computeColumnDragOpts
111
117
  const { showIcon, icon, trigger, isPeerDrag, isCrossDrag, visibleMethod, disabledMethod } = columnDragOpts
112
118
  if (columnOpts.drag && showIcon && (!visibleMethod || visibleMethod(params))) {
113
119
  if (!column.fixed && (isPeerDrag || isCrossDrag || !column.parentId)) {
114
120
  const isDisabled = disabledMethod && disabledMethod(params)
121
+ const columnDragIconSlot = (slots ? slots.columnDragIcon || slots['column-drag-icon'] : null) || tableSlots.columnDragIcon || tableSlots['column-drag-icon']
115
122
  const ons: Record<string, any> = {}
116
123
  if (trigger !== 'cell') {
117
124
  ons.mousedown = (evnt: MouseEvent) => {
@@ -127,11 +134,13 @@ function renderHeaderCellDragIcon (h: CreateElement, params: VxeTableDefines.Cel
127
134
  'is--disabled': isDisabled
128
135
  }],
129
136
  on: ons
130
- }, [
131
- h('i', {
132
- class: icon || getIcon().TABLE_DRAG_COLUMN
133
- })
134
- ])
137
+ }, columnDragIconSlot
138
+ ? $table.callSlot(columnDragIconSlot as any, params, h)
139
+ : [
140
+ h('i', {
141
+ class: icon || getIcon().TABLE_DRAG_COLUMN
142
+ })
143
+ ])
135
144
  }
136
145
  }
137
146
  return renderEmptyElement($table)
@@ -332,10 +332,7 @@ function handleVirtualYVisible ($xeTable: VxeTableConstructor) {
332
332
  const row = afterFullData[rIndex]
333
333
  const rowid = getRowid($xeTable, row)
334
334
  const rowRest = fullAllDataRowIdData[rowid]
335
- if (!rowRest) {
336
- break
337
- }
338
- offsetTop += rowRest.height || rowHeight
335
+ offsetTop += rowRest ? (rowRest.height || rowHeight) : rowHeight
339
336
  if (toVisibleIndex === -1 && scrollTop < offsetTop) {
340
337
  toVisibleIndex = rIndex
341
338
  }
@@ -2279,30 +2276,6 @@ const Methods = {
2279
2276
  this.afterTreeFullData = tableTree
2280
2277
  this.updateAfterDataIndex()
2281
2278
  },
2282
- updateTreeDataIndex () {
2283
- const $xeTable = this
2284
- const props = $xeTable
2285
- const internalData = $xeTable
2286
-
2287
- const { treeConfig } = props
2288
- const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData
2289
- const treeOpts = $xeTable.computeTreeOpts
2290
- if (treeConfig) {
2291
- if (treeOpts.transform) {
2292
- afterFullData.forEach((row: any, index: number) => {
2293
- const rowid = getRowid($xeTable, row)
2294
- const rowRest = fullAllDataRowIdData[rowid]
2295
- if (rowRest) {
2296
- rowRest._index = index
2297
- } else {
2298
- const rest = { row, rowid, seq: '-1', index: -1, $index: -1, _index: index, items: [], parent: null, level: 0, height: 0, oTop: 0 }
2299
- fullAllDataRowIdData[rowid] = rest
2300
- fullDataRowIdData[rowid] = rest
2301
- }
2302
- })
2303
- }
2304
- }
2305
- },
2306
2279
  /**
2307
2280
  * 预编译
2308
2281
  * 对渲染中的数据提前解析序号及索引。牺牲提前编译耗时换取渲染中额外损耗,使运行时更加流畅
@@ -2332,7 +2305,6 @@ const Methods = {
2332
2305
  }
2333
2306
  fullMaps[rowid] = row
2334
2307
  }, { children: treeOpts.transform ? treeOpts.mapChildrenField : childrenField })
2335
- $xeTable.updateTreeDataIndex()
2336
2308
  } else {
2337
2309
  afterFullData.forEach((row: any, index: number) => {
2338
2310
  const rowid = getRowid($xeTable, row)
@@ -6769,7 +6741,7 @@ const Methods = {
6769
6741
  return this.$nextTick().then(() => {
6770
6742
  if (transform) {
6771
6743
  this.handleTableData()
6772
- this.updateTreeDataIndex()
6744
+ this.updateAfterDataIndex()
6773
6745
  return this.$nextTick()
6774
6746
  }
6775
6747
  })
@@ -6883,7 +6855,7 @@ const Methods = {
6883
6855
  return this.handleBaseTreeExpand(rows, expanded).then(() => {
6884
6856
  handleVirtualTreeToList($xeTable)
6885
6857
  this.handleTableData()
6886
- this.updateTreeDataIndex()
6858
+ this.updateAfterDataIndex()
6887
6859
  }).then(() => {
6888
6860
  return this.recalculate()
6889
6861
  }).then(() => {
@@ -7380,9 +7352,9 @@ const Methods = {
7380
7352
  * @param {Number} scrollLeft 左距离
7381
7353
  * @param {Number} scrollTop 上距离
7382
7354
  */
7383
- scrollTo (scrollLeft: any, scrollTop: any) {
7384
- const $xeTable = this
7385
- const internalData = $xeTable
7355
+ scrollTo (scrollLeft: number | null, scrollTop?: number | null) {
7356
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
7357
+ const internalData = $xeTable as unknown as TableInternalData
7386
7358
 
7387
7359
  const { $refs } = this
7388
7360
  const { tableBody, tableHeader, leftBody, rightBody, tableFooter } = $refs
@@ -7429,9 +7401,13 @@ const Methods = {
7429
7401
  * @param {Row} row 行对象
7430
7402
  * @param {ColumnInfo} column 列配置
7431
7403
  */
7432
- scrollToRow (row: any, fieldOrColumn: any) {
7433
- const $xeTable = this
7404
+ scrollToRow (row: any, fieldOrColumn?: VxeColumnPropTypes.Field | VxeTableDefines.ColumnInfo) {
7405
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
7406
+ const props = $xeTable
7407
+ const reactData = $xeTable as unknown as TableReactData
7434
7408
 
7409
+ const { showOverflow } = props
7410
+ const { scrollYLoad, scrollXLoad } = reactData
7435
7411
  const rest = []
7436
7412
  if (row) {
7437
7413
  if (this.treeConfig) {
@@ -7443,7 +7419,15 @@ const Methods = {
7443
7419
  if (fieldOrColumn) {
7444
7420
  rest.push(handleScrollToRowColumn($xeTable, fieldOrColumn, row))
7445
7421
  }
7446
- return Promise.all(rest)
7422
+ return Promise.all(rest).then(() => {
7423
+ if (row) {
7424
+ if (!showOverflow && (scrollYLoad || scrollXLoad)) {
7425
+ calcCellHeight($xeTable)
7426
+ calcCellWidth($xeTable)
7427
+ }
7428
+ return $xeTable.$nextTick()
7429
+ }
7430
+ })
7447
7431
  },
7448
7432
  /**
7449
7433
  * 如果有滚动条,则滚动到对应的列
@@ -3,6 +3,8 @@ import { ColumnInfo } from './columnInfo'
3
3
  import { isScale, isPx } from '../../ui/src/dom'
4
4
  import { warnLog, errLog } from '../../ui/src/log'
5
5
 
6
+ import type { VxeTableDefines, VxeTableConstructor, TableReactData } from '../../../types'
7
+
6
8
  const getAllConvertColumns = (columns: any, parentColumn?: any) => {
7
9
  const result: any[] = []
8
10
  columns.forEach((column: any) => {
@@ -66,12 +68,6 @@ export const convertHeaderColumnToRows = (originColumns: any) => {
66
68
  return rows
67
69
  }
68
70
 
69
- const lineOffsetSizes: any = {
70
- mini: 3,
71
- small: 2,
72
- medium: 1
73
- }
74
-
75
71
  export function restoreScrollLocation ($xeTable: any, scrollLeft: any, scrollTop: any) {
76
72
  const internalData = $xeTable
77
73
 
@@ -248,15 +244,22 @@ export function getColReMinWidth (params: any) {
248
244
  return mWidth
249
245
  }
250
246
 
251
- function countTreeExpand (prevRow: any, params: any) {
247
+ const lineOffsetSizes: Record<string, any> = {
248
+ mini: 3,
249
+ small: 2,
250
+ medium: 1
251
+ }
252
+
253
+ function countTreeExpand (prevRow: any, params: VxeTableDefines.CellRenderBodyParams) {
252
254
  let count = 1
253
255
  if (!prevRow) {
254
256
  return count
255
257
  }
256
258
  const { $table } = params
257
- const { treeOpts } = $table
259
+ const treeOpts = $table.computeTreeOpts
260
+ const { transform, mapChildrenField } = treeOpts
258
261
  const childrenField = treeOpts.children || treeOpts.childrenField
259
- const rowChildren = prevRow[childrenField]
262
+ const rowChildren = prevRow[transform ? mapChildrenField : childrenField]
260
263
  if (rowChildren && $table.isTreeExpandByRow(prevRow)) {
261
264
  for (let index = 0; index < rowChildren.length; index++) {
262
265
  count += countTreeExpand(rowChildren[index], params)
@@ -265,18 +268,22 @@ function countTreeExpand (prevRow: any, params: any) {
265
268
  return count
266
269
  }
267
270
 
268
- export function getOffsetSize ($xetable: any) {
269
- const vSize = $xetable.computeSize
270
- return lineOffsetSizes[vSize] || 0
271
+ export function getOffsetSize ($xeTable: VxeTableConstructor) {
272
+ const vSize = $xeTable.computeSize
273
+ if (vSize) {
274
+ return lineOffsetSizes[vSize] || 0
275
+ }
276
+ return 0
271
277
  }
272
278
 
273
- export function calcTreeLine (params: any, items: any, rIndex: any) {
279
+ export function calcTreeLine (params: VxeTableDefines.CellRenderBodyParams, prevRow: any) {
274
280
  const { $table } = params
281
+ const tableReactData = $table as unknown as TableReactData
275
282
  let expandSize = 1
276
- if (rIndex) {
277
- expandSize = countTreeExpand(items[rIndex - 1], params)
283
+ if (prevRow) {
284
+ expandSize = countTreeExpand(prevRow, params)
278
285
  }
279
- return $table.rowHeight * expandSize - (rIndex ? 1 : (12 - getOffsetSize($table)))
286
+ return tableReactData.rowHeight * expandSize - (prevRow ? 1 : (12 - getOffsetSize($table)))
280
287
  }
281
288
 
282
289
  export function mergeBodyMethod (mergeList: any, _rowIndex: any, _columnIndex: any) {
@@ -349,6 +356,7 @@ export function rowToVisible ($xeTable: any, row: any) {
349
356
  const tableBody: any = $xeTable.$refs.tableBody
350
357
  const { columnStore, scrollYLoad } = reactData
351
358
  const { afterFullData, scrollYStore, fullAllDataRowIdData } = internalData
359
+ const { rowHeight } = scrollYStore
352
360
  const { leftList, rightList } = columnStore
353
361
  const bodyElem = tableBody ? tableBody.$el as HTMLDivElement : null
354
362
  const rowid = getRowid($xeTable, row)
@@ -378,19 +386,19 @@ export function rowToVisible ($xeTable: any, row: any) {
378
386
  // 如果是虚拟渲染滚动
379
387
  if (scrollYLoad) {
380
388
  if (showOverflow) {
381
- return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * scrollYStore.rowHeight)
389
+ return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * rowHeight)
382
390
  }
383
391
  let scrollTop = 0
384
- const rest = fullAllDataRowIdData[rowid]
385
- const rHeight = rest ? rest.height : 0
392
+ const rowRest = fullAllDataRowIdData[rowid]
393
+ const rHeight = rowRest ? (rowRest.height || rowHeight) : rowHeight
386
394
  for (let i = 0; i < afterFullData.length; i++) {
387
395
  const currRow = afterFullData[i]
388
396
  const currRowid = getRowid($xeTable, currRow)
389
397
  if (currRow === row || currRowid === rowid) {
390
398
  break
391
399
  }
392
- const rest = fullAllDataRowIdData[currRowid]
393
- scrollTop += rest ? rest.height : 0
400
+ const rowRest = fullAllDataRowIdData[currRowid]
401
+ scrollTop += rowRest ? (rowRest.height || rowHeight) : rowHeight
394
402
  }
395
403
  if (scrollTop < bodyScrollTop) {
396
404
  return $xeTable.scrollTo(null, scrollTop - offsetFixedLeft - 1)