vxe-table 4.7.87 → 4.7.90

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.
@@ -476,33 +476,45 @@ function colToVisible($xeTable, column) {
476
476
  refTableBody
477
477
  } = $xeTable.getRefMaps();
478
478
  const {
479
+ columnStore,
479
480
  scrollXLoad
480
481
  } = reactData;
481
482
  const {
482
483
  visibleColumn
483
484
  } = internalData;
485
+ const {
486
+ leftList,
487
+ rightList
488
+ } = columnStore;
484
489
  const tableBody = refTableBody.value;
485
490
  const bodyElem = tableBody ? tableBody.$el : null;
491
+ let offsetFixedLeft = 0;
492
+ leftList.forEach(item => {
493
+ offsetFixedLeft += item.renderWidth;
494
+ });
495
+ let offsetFixedRight = 0;
496
+ rightList.forEach(item => {
497
+ offsetFixedRight += item.renderWidth;
498
+ });
486
499
  if (bodyElem) {
500
+ const bodyWidth = bodyElem.clientWidth;
501
+ const bodySrcollLeft = bodyElem.scrollLeft;
487
502
  const tdElem = bodyElem.querySelector(`.${column.id}`);
488
503
  if (tdElem) {
489
- const bodyWidth = bodyElem.clientWidth;
490
- const bodySrcollLeft = bodyElem.scrollLeft;
491
504
  const tdOffsetParent = tdElem.offsetParent;
492
505
  const tdOffsetLeft = tdElem.offsetLeft + (tdOffsetParent ? tdOffsetParent.offsetLeft : 0);
493
- const tdWidth = tdElem.clientWidth;
494
- // 检测行是否在可视区中
495
- if (tdOffsetLeft < bodySrcollLeft || tdOffsetLeft > bodySrcollLeft + bodyWidth) {
496
- // 向左定位
497
- return $xeTable.scrollTo(tdOffsetLeft);
498
- } else if (tdOffsetLeft + tdWidth >= bodyWidth + bodySrcollLeft) {
499
- // 向右定位
500
- return $xeTable.scrollTo(bodySrcollLeft + tdWidth);
506
+ const cellWidth = tdElem.clientWidth;
507
+ // 检测是否在可视区中
508
+ if (tdOffsetLeft < bodySrcollLeft + offsetFixedLeft) {
509
+ return $xeTable.scrollTo(tdOffsetLeft - offsetFixedLeft - 1);
510
+ } else if (tdOffsetLeft + cellWidth - bodySrcollLeft > bodyWidth - offsetFixedRight) {
511
+ return $xeTable.scrollTo(tdOffsetLeft + cellWidth - (bodyWidth - offsetFixedRight - 1));
501
512
  }
502
513
  } else {
503
- // 如果是虚拟渲染跨行滚动
514
+ // 检测是否在虚拟渲染可视区中
504
515
  if (scrollXLoad) {
505
516
  let scrollLeft = 0;
517
+ const cellWidth = column.renderWidth;
506
518
  for (let index = 0; index < visibleColumn.length; index++) {
507
519
  const currCol = visibleColumn[index];
508
520
  if (currCol === column || currCol.id === column.id) {
@@ -510,7 +522,10 @@ function colToVisible($xeTable, column) {
510
522
  }
511
523
  scrollLeft += currCol.renderWidth;
512
524
  }
513
- return $xeTable.scrollTo(scrollLeft);
525
+ if (scrollLeft < bodySrcollLeft) {
526
+ return $xeTable.scrollTo(scrollLeft - offsetFixedLeft - 1);
527
+ }
528
+ return $xeTable.scrollTo(scrollLeft + cellWidth - (bodyWidth - offsetFixedRight - 1));
514
529
  }
515
530
  }
516
531
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.assembleColumn=assembleColumn,exports.clearTableAllStatus=clearTableAllStatus,exports.clearTableDefaultStatus=clearTableDefaultStatus,exports.colToVisible=colToVisible,exports.convertHeaderColumnToRows=void 0,exports.createColumn=createColumn,exports.destroyColumn=destroyColumn,exports.getCellValue=getCellValue,exports.getColReMaxWidth=getColReMaxWidth,exports.getColReMinWidth=getColReMinWidth,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=void 0,exports.isColumnInfo=isColumnInfo,exports.mergeBodyMethod=mergeBodyMethod,exports.removeScrollListener=removeScrollListener,exports.restoreScrollListener=restoreScrollListener,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq,exports.watchColumn=watchColumn;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getAllConvertColumns=(e,l)=>{const 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;const 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){const r=e["internalData"];return e.clearScroll().then(()=>{if(l||t)return r.lastScrollLeft=0,r.lastScrollTop=0,e.scrollTo(l,t)})}function removeScrollListener(e){e&&e._onscroll&&(e.onscroll=null)}function restoreScrollListener(e){e&&e._onscroll&&(e.onscroll=e._onscroll)}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function getRowkey(e){var l=e["props"],e=e.getComputeMaps()["computeRowOpts"],l=l["rowId"],e=e.value;return l||e.keyField||"_X_ROW_KEY"}function getRowid(e,l){l=_xeUtils.default.get(l,getRowkey(e));return _xeUtils.default.eqNull(l)?"":encodeURIComponent(l)}exports.convertHeaderColumnToRows=convertHeaderColumnToRows;const handleFieldOrColumn=(e,l)=>l?_xeUtils.default.isString(l)?e.getColumnByField(l):l:null;function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElemenMarginWidth(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 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 toTreePathSeq(e){return e.map((e,l)=>l%2==0?Number(e)+1:".").join("")}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 getColReMaxWidth(e){var l=e["$table"],l=l.getComputeMaps()["computeResizableOpts"],l=l.value["maxWidth"];if(l){e=_xeUtils.default.isFunction(l)?l(e):l;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}return-1}function getColReMinWidth(e){var{$table:l,column:t,cell:r}=e,o=l["props"],n=l.getComputeMaps()["computeResizableOpts"],n=n.value["minWidth"];if(n){e=_xeUtils.default.isFunction(n)?n(e):n;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var i,a,n=o["showHeaderOverflow"],{showHeaderOverflow:e,minWidth:o}=t,t=_xeUtils.default.isUndefined(e)||_xeUtils.default.isNull(e)?n:e,n="title"===t||(!0===t||"tooltip"===t)||"ellipsis"===t;let u=_xeUtils.default.floor(1.6*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize(queryCellElement(r,"")));if(n&&(e=getPaddingLeftRightSize(queryCellElement(r,"--title>.vxe-cell--checkbox")),t=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--required-icon")),n=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--edit-icon")),s=getElemenMarginWidth(queryCellElement(r,">.vxe-cell-title-prefix-icon")),i=getElemenMarginWidth(queryCellElement(r,">.vxe-cell-title-suffix-icon")),a=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--sort")),r=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--filter")),u+=e+t+n+s+i+r+a),o){var s,e=l.getRefMaps()["refTableBody"],t=e.value,n=t?t.$el:null;if(n){if((0,_dom.isScale)(o))return s=(n.clientWidth-1)/100,Math.max(u,Math.floor(_xeUtils.default.toInteger(o)*s));if((0,_dom.isPx)(o))return Math.max(u,_xeUtils.default.toInteger(o))}}return u}function isColumnInfo(e){return e&&(e.constructor===_columnInfo.ColumnInfo||e instanceof _columnInfo.ColumnInfo)}function createColumn(e,l,t){return isColumnInfo(l)?l:(0,_vue.reactive)(new _columnInfo.ColumnInfo(e,l,t))}function watchColumn(t,e,r){Object.keys(e).forEach(l=>{(0,_vue.watch)(()=>e[l],e=>{r.update(l,e),t&&("filters"===l?(t.setFilter(r,e),t.handleUpdateDataQueue()):["visible","fixed","width","minWidth","maxWidth"].includes(l)&&t.handleRefreshColumnQueue())})})}function assembleColumn(e,l,t,r){var e=e["reactData"],o=e["staticColumns"],n=l.parentNode,r=r?r.columnConfig:null,r=r?r.children:o;n&&r&&(r.splice(_xeUtils.default.arrayIndexOf(n.children,l),0,t),e.staticColumns=o.slice(0))}function destroyColumn(e,l){var e=e["reactData"],t=e["staticColumns"],r=_xeUtils.default.findTree(t,e=>e.id===l.id,{children:"children"});r&&r.items.splice(r.index,1),e.staticColumns=t.slice(0)}function getRootColumn(e,l){var e=e["internalData"],t=e["fullColumnIdData"];if(!l)return null;let r=l.parentId;for(;t[r];){const l=t[r].column;if(!(r=l.parentId))return l}return l}function mergeBodyMethod(l,t,r){for(let e=0;e<l.length;e++){var{row:o,col:n,rowspan:i,colspan:a}=l[e];if(-1<n&&-1<o&&i&&a){if(o===t&&n===r)return{rowspan:i,colspan:a};if(o<=t&&t<o+i&&n<=r&&r<n+a)return{rowspan:0,colspan:0}}}}function clearTableDefaultStatus(e){var{props:l,internalData:t}=e;return t.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&&(l.keyboardConfig||l.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&l.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function rowToVisible(e,l){var{reactData:t,internalData:r}=e,o=e.getRefMaps()["refTableBody"],t=t["scrollYLoad"],{afterFullData:r,scrollYStore:n}=r,o=o.value,o=o?o.$el:null;if(o){var i=o.querySelector(`[rowid="${getRowid(e,l)}"]`);if(i){var a=o.clientHeight,o=o.scrollTop,u=i.offsetParent,u=i.offsetTop+(u?u.offsetTop:0),i=i.clientHeight;if(u<o||o+a<u)return e.scrollTo(null,u);if(a+o<=u+i)return e.scrollTo(null,o+i)}else if(t)return e.scrollTo(null,(e.findRowIndexOf(r,l)-1)*n.rowHeight)}return Promise.resolve()}function colToVisible(e,t){var{reactData:l,internalData:r}=e,o=e.getRefMaps()["refTableBody"],l=l["scrollXLoad"],n=r["visibleColumn"],r=o.value,o=r?r.$el:null;if(o){r=o.querySelector("."+t.id);if(r){var i=o.clientWidth,o=o.scrollLeft,a=r.offsetParent,a=r.offsetLeft+(a?a.offsetLeft:0),r=r.clientWidth;if(a<o||o+i<a)return e.scrollTo(a);if(i+o<=a+r)return e.scrollTo(o+r)}else if(l){let l=0;for(let e=0;e<n.length;e++){var u=n[e];if(u===t||u.id===t.id)break;l+=u.renderWidth}return e.scrollTo(l)}}return Promise.resolve()}exports.handleFieldOrColumn=handleFieldOrColumn;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.assembleColumn=assembleColumn,exports.clearTableAllStatus=clearTableAllStatus,exports.clearTableDefaultStatus=clearTableDefaultStatus,exports.colToVisible=colToVisible,exports.convertHeaderColumnToRows=void 0,exports.createColumn=createColumn,exports.destroyColumn=destroyColumn,exports.getCellValue=getCellValue,exports.getColReMaxWidth=getColReMaxWidth,exports.getColReMinWidth=getColReMinWidth,exports.getRootColumn=getRootColumn,exports.getRowUniqueId=getRowUniqueId,exports.getRowid=getRowid,exports.getRowkey=getRowkey,exports.handleFieldOrColumn=void 0,exports.isColumnInfo=isColumnInfo,exports.mergeBodyMethod=mergeBodyMethod,exports.removeScrollListener=removeScrollListener,exports.restoreScrollListener=restoreScrollListener,exports.restoreScrollLocation=restoreScrollLocation,exports.rowToVisible=rowToVisible,exports.setCellValue=setCellValue,exports.toFilters=toFilters,exports.toTreePathSeq=toTreePathSeq,exports.watchColumn=watchColumn;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_columnInfo=require("./columnInfo"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getAllConvertColumns=(e,l)=>{const 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;const 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){const r=e["internalData"];return e.clearScroll().then(()=>{if(l||t)return r.lastScrollLeft=0,r.lastScrollTop=0,e.scrollTo(l,t)})}function removeScrollListener(e){e&&e._onscroll&&(e.onscroll=null)}function restoreScrollListener(e){e&&e._onscroll&&(e.onscroll=e._onscroll)}function getRowUniqueId(){return _xeUtils.default.uniqueId("row_")}function getRowkey(e){var l=e["props"],e=e.getComputeMaps()["computeRowOpts"],l=l["rowId"],e=e.value;return l||e.keyField||"_X_ROW_KEY"}function getRowid(e,l){l=_xeUtils.default.get(l,getRowkey(e));return _xeUtils.default.eqNull(l)?"":encodeURIComponent(l)}exports.convertHeaderColumnToRows=convertHeaderColumnToRows;const handleFieldOrColumn=(e,l)=>l?_xeUtils.default.isString(l)?e.getColumnByField(l):l:null;function getPaddingLeftRightSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingLeft)+_xeUtils.default.toNumber(e.paddingRight)):0}function getElemenMarginWidth(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 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 toTreePathSeq(e){return e.map((e,l)=>l%2==0?Number(e)+1:".").join("")}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 getColReMaxWidth(e){var l=e["$table"],l=l.getComputeMaps()["computeResizableOpts"],l=l.value["maxWidth"];if(l){e=_xeUtils.default.isFunction(l)?l(e):l;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}return-1}function getColReMinWidth(e){var{$table:l,column:t,cell:r}=e,o=l["props"],n=l.getComputeMaps()["computeResizableOpts"],n=n.value["minWidth"];if(n){e=_xeUtils.default.isFunction(n)?n(e):n;if("auto"!==e)return Math.max(1,_xeUtils.default.toNumber(e))}var i,a,n=o["showHeaderOverflow"],{showHeaderOverflow:e,minWidth:o}=t,t=_xeUtils.default.isUndefined(e)||_xeUtils.default.isNull(e)?n:e,n="title"===t||(!0===t||"tooltip"===t)||"ellipsis"===t;let u=_xeUtils.default.floor(1.6*(_xeUtils.default.toNumber(getComputedStyle(r).fontSize)||14))+(getPaddingLeftRightSize(r)+getPaddingLeftRightSize(queryCellElement(r,"")));if(n&&(e=getPaddingLeftRightSize(queryCellElement(r,"--title>.vxe-cell--checkbox")),t=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--required-icon")),n=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--edit-icon")),s=getElemenMarginWidth(queryCellElement(r,">.vxe-cell-title-prefix-icon")),i=getElemenMarginWidth(queryCellElement(r,">.vxe-cell-title-suffix-icon")),a=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--sort")),r=getElemenMarginWidth(queryCellElement(r,">.vxe-cell--filter")),u+=e+t+n+s+i+r+a),o){var s,e=l.getRefMaps()["refTableBody"],t=e.value,n=t?t.$el:null;if(n){if((0,_dom.isScale)(o))return s=(n.clientWidth-1)/100,Math.max(u,Math.floor(_xeUtils.default.toInteger(o)*s));if((0,_dom.isPx)(o))return Math.max(u,_xeUtils.default.toInteger(o))}}return u}function isColumnInfo(e){return e&&(e.constructor===_columnInfo.ColumnInfo||e instanceof _columnInfo.ColumnInfo)}function createColumn(e,l,t){return isColumnInfo(l)?l:(0,_vue.reactive)(new _columnInfo.ColumnInfo(e,l,t))}function watchColumn(t,e,r){Object.keys(e).forEach(l=>{(0,_vue.watch)(()=>e[l],e=>{r.update(l,e),t&&("filters"===l?(t.setFilter(r,e),t.handleUpdateDataQueue()):["visible","fixed","width","minWidth","maxWidth"].includes(l)&&t.handleRefreshColumnQueue())})})}function assembleColumn(e,l,t,r){var e=e["reactData"],o=e["staticColumns"],n=l.parentNode,r=r?r.columnConfig:null,r=r?r.children:o;n&&r&&(r.splice(_xeUtils.default.arrayIndexOf(n.children,l),0,t),e.staticColumns=o.slice(0))}function destroyColumn(e,l){var e=e["reactData"],t=e["staticColumns"],r=_xeUtils.default.findTree(t,e=>e.id===l.id,{children:"children"});r&&r.items.splice(r.index,1),e.staticColumns=t.slice(0)}function getRootColumn(e,l){var e=e["internalData"],t=e["fullColumnIdData"];if(!l)return null;let r=l.parentId;for(;t[r];){const l=t[r].column;if(!(r=l.parentId))return l}return l}function mergeBodyMethod(l,t,r){for(let e=0;e<l.length;e++){var{row:o,col:n,rowspan:i,colspan:a}=l[e];if(-1<n&&-1<o&&i&&a){if(o===t&&n===r)return{rowspan:i,colspan:a};if(o<=t&&t<o+i&&n<=r&&r<n+a)return{rowspan:0,colspan:0}}}}function clearTableDefaultStatus(e){var{props:l,internalData:t}=e;return t.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&&(l.keyboardConfig||l.mouseConfig)&&e.clearSelected(),e.clearCellAreas&&l.mouseConfig&&(e.clearCellAreas(),e.clearCopyCellArea()),e.clearScroll()}function clearTableAllStatus(e){return e.clearFilter&&e.clearFilter(),clearTableDefaultStatus(e)}function rowToVisible(e,l){var{reactData:t,internalData:r}=e,o=e.getRefMaps()["refTableBody"],t=t["scrollYLoad"],{afterFullData:r,scrollYStore:n}=r,o=o.value,o=o?o.$el:null;if(o){var i=o.querySelector(`[rowid="${getRowid(e,l)}"]`);if(i){var a=o.clientHeight,o=o.scrollTop,u=i.offsetParent,u=i.offsetTop+(u?u.offsetTop:0),i=i.clientHeight;if(u<o||o+a<u)return e.scrollTo(null,u);if(a+o<=u+i)return e.scrollTo(null,o+i)}else if(t)return e.scrollTo(null,(e.findRowIndexOf(r,l)-1)*n.rowHeight)}return Promise.resolve()}function colToVisible(e,t){var{reactData:r,internalData:o}=e,l=e.getRefMaps()["refTableBody"],{columnStore:r,scrollXLoad:n}=r,i=o["visibleColumn"],{leftList:o,rightList:r}=r,l=l.value,l=l?l.$el:null;let a=0,u=(o.forEach(e=>{a+=e.renderWidth}),0);if(r.forEach(e=>{u+=e.renderWidth}),l){o=l.clientWidth,r=l.scrollLeft,l=l.querySelector("."+t.id);if(l){var s=l.offsetParent,s=l.offsetLeft+(s?s.offsetLeft:0),l=l.clientWidth;if(s<r+a)return e.scrollTo(s-a-1);if(s+l-r>o-u)return e.scrollTo(s+l-(o-u-1))}else if(n){let l=0;s=t.renderWidth;for(let e=0;e<i.length;e++){var c=i[e];if(c===t||c.id===t.id)break;l+=c.renderWidth}return l<r?e.scrollTo(l-a-1):e.scrollTo(l+s-(o-u-1))}}return Promise.resolve()}exports.handleFieldOrColumn=handleFieldOrColumn;
package/lib/ui/index.js CHANGED
@@ -13,9 +13,9 @@ 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.7.87";
16
+ const version = exports.version = "4.7.90";
17
17
  _core.VxeUI.version = version;
18
- _core.VxeUI.tableVersion = "4.7.87";
18
+ _core.VxeUI.tableVersion = "4.7.90";
19
19
  _core.VxeUI.setConfig({
20
20
  emptyCell: ' ',
21
21
  table: {
@@ -1 +1 @@
1
- "use strict";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");const version=exports.version="4.7.87",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion="4.7.87",_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{refreshDelay:250},radioConfig:{strict:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single"},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}},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},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",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
+ "use strict";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");const version=exports.version="4.7.90",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion="4.7.90",_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{refreshDelay:250},radioConfig:{strict:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single"},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}},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},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",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.7.87"}`;
11
+ const version = `table v${"4.7.90"}`;
12
12
  const warnLog = exports.warnLog = log.create('warn', version);
13
13
  const errLog = exports.errLog = log.create('error', version);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");const log=_core.VxeUI["log"],version="table v4.7.87",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");const log=_core.VxeUI["log"],version="table v4.7.90",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.7.87",
3
+ "version": "4.7.90",
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": "^4.2.19"
31
+ "vxe-pc-ui": "^4.2.20"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/resize-observer-browser": "^0.1.11",
@@ -801,7 +801,7 @@ export default defineComponent({
801
801
  return { rowHeight: 0, visibleSize: 8 }
802
802
  }
803
803
 
804
- const calculateMergerOffserIndex = (list: any[], offsetItem: any, type: 'row' | 'col') => {
804
+ const calculateMergerOffsetIndex = (list: any[], offsetItem: any, type: 'row' | 'col') => {
805
805
  for (let mcIndex = 0, len = list.length; mcIndex < len; mcIndex++) {
806
806
  const mergeItem = list[mcIndex]
807
807
  const { startIndex, endIndex } = offsetItem
@@ -1142,7 +1142,9 @@ export default defineComponent({
1142
1142
  })
1143
1143
  } else {
1144
1144
  const labelEl = cellEl.firstChild as HTMLElement
1145
- titleWidth = labelEl.offsetWidth
1145
+ if (labelEl) {
1146
+ titleWidth = labelEl.offsetWidth
1147
+ }
1146
1148
  }
1147
1149
  if (titleWidth) {
1148
1150
  colWidth = Math.max(colWidth, Math.ceil(titleWidth) + 4)
@@ -1373,6 +1375,7 @@ export default defineComponent({
1373
1375
  const { treeConfig } = props
1374
1376
  const { treeExpandedMaps } = reactData
1375
1377
  const treeOpts = computeTreeOpts.value
1378
+ const childrenField = treeOpts.children || treeOpts.childrenField
1376
1379
  if (treeConfig && treeOpts.transform) {
1377
1380
  const fullData: any[] = []
1378
1381
  const expandMaps: {
@@ -1385,7 +1388,7 @@ export default defineComponent({
1385
1388
  expandMaps[rowid] = 1
1386
1389
  fullData.push(row)
1387
1390
  }
1388
- }, { children: treeOpts.mapChildrenField })
1391
+ }, { children: childrenField })
1389
1392
  internalData.afterFullData = fullData
1390
1393
  updateScrollYStatus(fullData)
1391
1394
  return fullData
@@ -1403,6 +1406,7 @@ export default defineComponent({
1403
1406
  const filterOpts = computeFilterOpts.value
1404
1407
  const sortOpts = computeSortOpts.value
1405
1408
  const treeOpts = computeTreeOpts.value
1409
+ const childrenField = treeOpts.children || treeOpts.childrenField
1406
1410
  const { transform } = treeOpts
1407
1411
  const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
1408
1412
  const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts
@@ -1464,7 +1468,12 @@ export default defineComponent({
1464
1468
  }
1465
1469
  if (treeConfig && transform) {
1466
1470
  // 筛选虚拟树
1467
- tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, { ...treeOpts, original: true })
1471
+ tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
1472
+ original: true,
1473
+ isEvery: true,
1474
+ children: treeOpts.mapChildrenField,
1475
+ mapChildren: childrenField
1476
+ })
1468
1477
  tableData = tableTree
1469
1478
  } else {
1470
1479
  tableData = treeConfig ? tableFullTreeData.filter(handleFilter) : tableFullData.filter(handleFilter)
@@ -1473,7 +1482,12 @@ export default defineComponent({
1473
1482
  } else {
1474
1483
  if (treeConfig && transform) {
1475
1484
  // 还原虚拟树
1476
- tableTree = XEUtils.searchTree(tableFullTreeData, () => true, { ...treeOpts, original: true })
1485
+ tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
1486
+ original: true,
1487
+ isEvery: true,
1488
+ children: treeOpts.mapChildrenField,
1489
+ mapChildren: childrenField
1490
+ })
1477
1491
  tableData = tableTree
1478
1492
  } else {
1479
1493
  tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
@@ -1506,7 +1520,12 @@ export default defineComponent({
1506
1520
  } else {
1507
1521
  if (treeConfig && transform) {
1508
1522
  // 还原虚拟树
1509
- tableTree = XEUtils.searchTree(tableFullTreeData, () => true, { ...treeOpts, original: true })
1523
+ tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
1524
+ original: true,
1525
+ isEvery: true,
1526
+ children: treeOpts.mapChildrenField,
1527
+ mapChildren: childrenField
1528
+ })
1510
1529
  tableData = tableTree
1511
1530
  } else {
1512
1531
  tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
@@ -2441,7 +2460,7 @@ export default defineComponent({
2441
2460
  startIndex: Math.max(0, toVisibleIndex - 1 - offsetSize),
2442
2461
  endIndex: toVisibleIndex + visibleSize + offsetSize
2443
2462
  }
2444
- calculateMergerOffserIndex(mergeList.concat(mergeFooterList), offsetItem, 'col')
2463
+ calculateMergerOffsetIndex(mergeList.concat(mergeFooterList), offsetItem, 'col')
2445
2464
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem
2446
2465
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
2447
2466
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -2729,7 +2748,7 @@ export default defineComponent({
2729
2748
  startIndex: Math.max(0, toVisibleIndex - 1 - offsetSize),
2730
2749
  endIndex: toVisibleIndex + visibleSize + offsetSize
2731
2750
  }
2732
- calculateMergerOffserIndex(mergeList, offsetItem, 'row')
2751
+ calculateMergerOffsetIndex(mergeList, offsetItem, 'row')
2733
2752
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem
2734
2753
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
2735
2754
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -5713,7 +5732,6 @@ export default defineComponent({
5713
5732
  handleBatchSelectRows (rows, value, isForce) {
5714
5733
  const { treeConfig } = props
5715
5734
  const { selectCheckboxMaps } = reactData
5716
- const selectRowMaps = Object.assign({}, selectCheckboxMaps)
5717
5735
  const checkboxOpts = computeCheckboxOpts.value
5718
5736
  const { checkField, checkStrictly, checkMethod } = checkboxOpts
5719
5737
  if (checkField) {
@@ -5735,6 +5753,7 @@ export default defineComponent({
5735
5753
  tablePrivateMethods.handleSelectRow({ row }, value, isForce)
5736
5754
  })
5737
5755
  } else {
5756
+ const selectRowMaps = Object.assign({}, selectCheckboxMaps)
5738
5757
  rows.forEach(row => {
5739
5758
  const rowid = getRowid($xeTable, row)
5740
5759
  if (isForce || (!checkMethod || checkMethod({ row }))) {
@@ -5750,9 +5769,9 @@ export default defineComponent({
5750
5769
  handleCheckboxReserveRow(row, value)
5751
5770
  }
5752
5771
  })
5772
+ reactData.selectCheckboxMaps = selectRowMaps
5753
5773
  }
5754
5774
  }
5755
- reactData.selectCheckboxMaps = selectRowMaps
5756
5775
  },
5757
5776
  /**
5758
5777
  * 单行
@@ -413,30 +413,38 @@ export function rowToVisible ($xeTable: VxeTableConstructor & VxeTablePrivateMet
413
413
  export function colToVisible ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, column: VxeTableDefines.ColumnInfo) {
414
414
  const { reactData, internalData } = $xeTable
415
415
  const { refTableBody } = $xeTable.getRefMaps()
416
- const { scrollXLoad } = reactData
416
+ const { columnStore, scrollXLoad } = reactData
417
417
  const { visibleColumn } = internalData
418
+ const { leftList, rightList } = columnStore
418
419
  const tableBody = refTableBody.value
419
420
  const bodyElem = tableBody ? tableBody.$el as HTMLDivElement : null
421
+ let offsetFixedLeft = 0
422
+ leftList.forEach(item => {
423
+ offsetFixedLeft += item.renderWidth
424
+ })
425
+ let offsetFixedRight = 0
426
+ rightList.forEach(item => {
427
+ offsetFixedRight += item.renderWidth
428
+ })
420
429
  if (bodyElem) {
430
+ const bodyWidth = bodyElem.clientWidth
431
+ const bodySrcollLeft = bodyElem.scrollLeft
421
432
  const tdElem: HTMLTableCellElement | null = bodyElem.querySelector(`.${column.id}`)
422
433
  if (tdElem) {
423
- const bodyWidth = bodyElem.clientWidth
424
- const bodySrcollLeft = bodyElem.scrollLeft
425
434
  const tdOffsetParent = tdElem.offsetParent as HTMLElement
426
435
  const tdOffsetLeft = tdElem.offsetLeft + (tdOffsetParent ? tdOffsetParent.offsetLeft : 0)
427
- const tdWidth = tdElem.clientWidth
428
- // 检测行是否在可视区中
429
- if (tdOffsetLeft < bodySrcollLeft || tdOffsetLeft > bodySrcollLeft + bodyWidth) {
430
- // 向左定位
431
- return $xeTable.scrollTo(tdOffsetLeft)
432
- } else if (tdOffsetLeft + tdWidth >= bodyWidth + bodySrcollLeft) {
433
- // 向右定位
434
- return $xeTable.scrollTo(bodySrcollLeft + tdWidth)
436
+ const cellWidth = tdElem.clientWidth
437
+ // 检测是否在可视区中
438
+ if (tdOffsetLeft < (bodySrcollLeft + offsetFixedLeft)) {
439
+ return $xeTable.scrollTo(tdOffsetLeft - offsetFixedLeft - 1)
440
+ } else if ((tdOffsetLeft + cellWidth - bodySrcollLeft) > (bodyWidth - offsetFixedRight)) {
441
+ return $xeTable.scrollTo((tdOffsetLeft + cellWidth) - (bodyWidth - offsetFixedRight - 1))
435
442
  }
436
443
  } else {
437
- // 如果是虚拟渲染跨行滚动
444
+ // 检测是否在虚拟渲染可视区中
438
445
  if (scrollXLoad) {
439
446
  let scrollLeft = 0
447
+ const cellWidth = column.renderWidth
440
448
  for (let index = 0; index < visibleColumn.length; index++) {
441
449
  const currCol = visibleColumn[index]
442
450
  if (currCol === column || currCol.id === column.id) {
@@ -444,7 +452,10 @@ export function colToVisible ($xeTable: VxeTableConstructor & VxeTablePrivateMet
444
452
  }
445
453
  scrollLeft += currCol.renderWidth
446
454
  }
447
- return $xeTable.scrollTo(scrollLeft)
455
+ if (scrollLeft < bodySrcollLeft) {
456
+ return $xeTable.scrollTo(scrollLeft - offsetFixedLeft - 1)
457
+ }
458
+ return $xeTable.scrollTo((scrollLeft + cellWidth) - (bodyWidth - offsetFixedRight - 1))
448
459
  }
449
460
  }
450
461
  }
@@ -68,6 +68,7 @@
68
68
  --vxe-ui-table-cell-extend-area-border-color: var(--vxe-ui-table-cell-area-border-color);
69
69
  --vxe-ui-table-cell-active-area-border-color: var(--vxe-ui-table-cell-area-border-color);
70
70
  --vxe-ui-table-cell-area-background-color: rgba(64,158,255,0.2);
71
+ --vxe-ui-table-header-active-area-background-color: rgba(64,158,255,0.1);
71
72
 
72
73
  --vxe-ui-table-expand-padding-default: 16px;
73
74