vxe-table 4.4.6 → 4.5.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/es/edit/src/hook.js +2 -2
  2. package/es/export/src/hook.js +21 -12
  3. package/es/icon/style/{iconfont.1688790429861.ttf → iconfont.1689121467376.ttf} +0 -0
  4. package/es/icon/style/iconfont.1689121467376.woff +0 -0
  5. package/es/icon/style/iconfont.1689121467376.woff2 +0 -0
  6. package/es/icon/style.css +25 -1
  7. package/{lib/icon/style/iconfont.1688790429861.ttf → es/iconfont.1689121467376.ttf} +0 -0
  8. package/es/iconfont.1689121467376.woff +0 -0
  9. package/es/iconfont.1689121467376.woff2 +0 -0
  10. package/es/locale/lang/en-US.js +6 -2
  11. package/es/locale/lang/es-ES.js +9 -5
  12. package/es/locale/lang/ja-JP.js +5 -2
  13. package/es/locale/lang/zh-CN.js +6 -2
  14. package/es/locale/lang/zh-TC.js +6 -2
  15. package/es/style.css +1 -1
  16. package/es/style.min.css +1 -1
  17. package/es/table/src/body.js +7 -7
  18. package/es/table/src/columnInfo.js +7 -0
  19. package/es/table/src/table.js +121 -65
  20. package/es/table/src/util.js +16 -0
  21. package/es/table/style.css +6 -12
  22. package/es/toolbar/src/toolbar.js +86 -39
  23. package/es/toolbar/style.css +45 -14
  24. package/es/tools/log.js +1 -1
  25. package/es/v-x-e-table/index.js +1 -1
  26. package/es/v-x-e-table/src/conf.js +19 -11
  27. package/es/v-x-e-table/style.css +25 -1
  28. package/es/validator/src/hook.js +61 -31
  29. package/es/vxe-icon/style.css +25 -1
  30. package/es/vxe-table/style.css +6 -12
  31. package/es/vxe-toolbar/style.css +45 -14
  32. package/helper/vetur/attributes.json +57 -13
  33. package/helper/vetur/tags.json +12 -1
  34. package/lib/edit/src/hook.js +2 -2
  35. package/lib/edit/src/hook.min.js +1 -1
  36. package/lib/export/src/hook.js +23 -12
  37. package/lib/export/src/hook.min.js +1 -1
  38. package/lib/{iconfont.1688790429861.ttf → icon/style/iconfont.1689121467376.ttf} +0 -0
  39. package/lib/icon/style/iconfont.1689121467376.woff +0 -0
  40. package/lib/icon/style/iconfont.1689121467376.woff2 +0 -0
  41. package/lib/icon/style/style.css +25 -1
  42. package/lib/icon/style/style.min.css +25 -1
  43. package/{es/iconfont.1688790429861.ttf → lib/iconfont.1689121467376.ttf} +0 -0
  44. package/lib/iconfont.1689121467376.woff +0 -0
  45. package/lib/iconfont.1689121467376.woff2 +0 -0
  46. package/lib/index.umd.js +314 -147
  47. package/lib/index.umd.min.js +1 -1
  48. package/lib/locale/lang/en-US.js +6 -2
  49. package/lib/locale/lang/en-US.min.js +1 -1
  50. package/lib/locale/lang/en-US.umd.js +6 -2
  51. package/lib/locale/lang/es-ES.js +9 -5
  52. package/lib/locale/lang/es-ES.min.js +1 -1
  53. package/lib/locale/lang/es-ES.umd.js +9 -5
  54. package/lib/locale/lang/ja-JP.js +5 -2
  55. package/lib/locale/lang/ja-JP.min.js +1 -1
  56. package/lib/locale/lang/ja-JP.umd.js +5 -2
  57. package/lib/locale/lang/zh-CN.js +6 -2
  58. package/lib/locale/lang/zh-CN.min.js +1 -1
  59. package/lib/locale/lang/zh-CN.umd.js +6 -2
  60. package/lib/locale/lang/zh-HK.min.js +1 -1
  61. package/lib/locale/lang/zh-HK.umd.js +6 -2
  62. package/lib/locale/lang/zh-MO.min.js +1 -1
  63. package/lib/locale/lang/zh-MO.umd.js +6 -2
  64. package/lib/locale/lang/zh-TC.js +6 -2
  65. package/lib/locale/lang/zh-TC.min.js +1 -1
  66. package/lib/locale/lang/zh-TC.umd.js +6 -2
  67. package/lib/locale/lang/zh-TW.min.js +1 -1
  68. package/lib/locale/lang/zh-TW.umd.js +6 -2
  69. package/lib/style.css +1 -1
  70. package/lib/style.min.css +1 -1
  71. package/lib/table/src/body.js +8 -8
  72. package/lib/table/src/body.min.js +1 -1
  73. package/lib/table/src/columnInfo.js +7 -0
  74. package/lib/table/src/columnInfo.min.js +1 -1
  75. package/lib/table/src/table.js +122 -73
  76. package/lib/table/src/table.min.js +1 -1
  77. package/lib/table/src/util.js +17 -0
  78. package/lib/table/src/util.min.js +1 -1
  79. package/lib/table/style/style.css +6 -12
  80. package/lib/table/style/style.min.css +1 -1
  81. package/lib/toolbar/src/toolbar.js +54 -14
  82. package/lib/toolbar/src/toolbar.min.js +1 -1
  83. package/lib/toolbar/style/style.css +45 -14
  84. package/lib/toolbar/style/style.min.css +1 -1
  85. package/lib/tools/log.js +1 -1
  86. package/lib/tools/log.min.js +1 -1
  87. package/lib/v-x-e-table/index.js +1 -1
  88. package/lib/v-x-e-table/index.min.js +1 -1
  89. package/lib/v-x-e-table/src/conf.js +12 -3
  90. package/lib/v-x-e-table/src/conf.min.js +1 -1
  91. package/lib/v-x-e-table/style/style.css +25 -1
  92. package/lib/v-x-e-table/style/style.min.css +1 -1
  93. package/lib/validator/src/hook.js +62 -33
  94. package/lib/validator/src/hook.min.js +1 -1
  95. package/lib/vxe-icon/style/style.css +25 -1
  96. package/lib/vxe-icon/style/style.min.css +1 -1
  97. package/lib/vxe-table/style/style.css +6 -12
  98. package/lib/vxe-table/style/style.min.css +1 -1
  99. package/lib/vxe-toolbar/style/style.css +45 -14
  100. package/lib/vxe-toolbar/style/style.min.css +1 -1
  101. package/package.json +1 -1
  102. package/packages/edit/src/hook.ts +2 -2
  103. package/packages/export/src/hook.ts +21 -12
  104. package/packages/locale/lang/en-US.ts +6 -2
  105. package/packages/locale/lang/es-ES.ts +9 -5
  106. package/packages/locale/lang/ja-JP.ts +5 -2
  107. package/packages/locale/lang/zh-CN.ts +6 -2
  108. package/packages/locale/lang/zh-TC.ts +6 -2
  109. package/packages/table/src/body.ts +7 -7
  110. package/packages/table/src/columnInfo.ts +8 -1
  111. package/packages/table/src/table.ts +113 -53
  112. package/packages/table/src/util.ts +17 -0
  113. package/packages/toolbar/src/toolbar.ts +87 -40
  114. package/packages/v-x-e-table/src/conf.ts +11 -3
  115. package/packages/validator/src/hook.ts +71 -30
  116. package/styles/icon/iconfont.ttf +0 -0
  117. package/styles/icon/iconfont.woff +0 -0
  118. package/styles/icon/iconfont.woff2 +0 -0
  119. package/styles/icon.scss +25 -1
  120. package/styles/table.scss +7 -21
  121. package/styles/toolbar.scss +36 -9
  122. package/types/column.d.ts +1 -0
  123. package/types/table.d.ts +23 -6
  124. package/types/toolbar.d.ts +9 -1
  125. package/types/validator.d.ts +2 -3
  126. package/es/icon/style/iconfont.1688790429861.woff +0 -0
  127. package/es/icon/style/iconfont.1688790429861.woff2 +0 -0
  128. package/es/iconfont.1688790429861.woff +0 -0
  129. package/es/iconfont.1688790429861.woff2 +0 -0
  130. package/lib/icon/style/iconfont.1688790429861.woff +0 -0
  131. package/lib/icon/style/iconfont.1688790429861.woff2 +0 -0
  132. package/lib/iconfont.1688790429861.woff +0 -0
  133. package/lib/iconfont.1688790429861.woff2 +0 -0
@@ -131,7 +131,7 @@ export default defineComponent({
131
131
  var renderColumn = function (seq, rowid, fixedType, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) {
132
132
  var _a;
133
133
  var columnKey = tableProps.columnKey, allColumnOverflow = tableProps.showOverflow, allCellClassName = tableProps.cellClassName, cellStyle = tableProps.cellStyle, allAlign = tableProps.align, spanMethod = tableProps.spanMethod, mouseConfig = tableProps.mouseConfig, editConfig = tableProps.editConfig, editRules = tableProps.editRules, tooltipConfig = tableProps.tooltipConfig;
134
- var tableData = tableReactData.tableData, overflowX = tableReactData.overflowX, scrollYLoad = tableReactData.scrollYLoad, currentColumn = tableReactData.currentColumn, mergeList = tableReactData.mergeList, editStore = tableReactData.editStore, validStore = tableReactData.validStore, isAllOverflow = tableReactData.isAllOverflow;
134
+ var tableData = tableReactData.tableData, overflowX = tableReactData.overflowX, scrollYLoad = tableReactData.scrollYLoad, currentColumn = tableReactData.currentColumn, mergeList = tableReactData.mergeList, editStore = tableReactData.editStore, isAllOverflow = tableReactData.isAllOverflow, validErrorMaps = tableReactData.validErrorMaps;
135
135
  var afterFullData = tableInternalData.afterFullData;
136
136
  var validOpts = computeValidOpts.value;
137
137
  var checkboxOpts = computeCheckboxOpts.value;
@@ -161,7 +161,7 @@ export default defineComponent({
161
161
  var isDirty;
162
162
  var tdOns = {};
163
163
  var cellAlign = align || allAlign;
164
- var hasValidError = validStore.row === row && validStore.column === column;
164
+ var errorValidItem = validErrorMaps["".concat(rowid, ":").concat(column.id)];
165
165
  var showValidTip = editRules && validOpts.showMessage;
166
166
  var attrs = { colid: column.id };
167
167
  var params = { $table: $xetable, $grid: $xetable.xegrid, seq: seq, rowid: rowid, row: row, rowIndex: rowIndex, $rowIndex: $rowIndex, _rowIndex: _rowIndex, column: column, columnIndex: columnIndex, $columnIndex: $columnIndex, _columnIndex: _columnIndex, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, level: rowLevel, visibleData: afterFullData, data: tableData, items: items };
@@ -276,16 +276,16 @@ export default defineComponent({
276
276
  },
277
277
  title: showTitle ? $xetable.getCellLabel(row, column) : null
278
278
  }, column.renderCell(params))], false));
279
- if (showValidTip && hasValidError) {
279
+ if (showValidTip && errorValidItem) {
280
280
  tdVNs.push(h('div', {
281
281
  class: 'vxe-cell--valid',
282
- style: validStore.rule && validStore.rule.maxWidth ? {
283
- width: "".concat(validStore.rule.maxWidth, "px")
282
+ style: errorValidItem.rule && errorValidItem.rule.maxWidth ? {
283
+ width: "".concat(errorValidItem.rule.maxWidth, "px")
284
284
  } : null
285
285
  }, [
286
286
  h('span', {
287
287
  class: 'vxe-cell--valid-msg'
288
- }, validStore.content)
288
+ }, errorValidItem.content)
289
289
  ]));
290
290
  }
291
291
  }
@@ -302,7 +302,7 @@ export default defineComponent({
302
302
  _a['fixed--hidden'] = fixedHiddenColumn,
303
303
  _a['col--dirty'] = isDirty,
304
304
  _a['col--actived'] = editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
305
- _a['col--valid-error'] = hasValidError,
305
+ _a['col--valid-error'] = !!errorValidItem,
306
306
  _a['col--current'] = currentColumn === column,
307
307
  _a),
308
308
  getPropClass(compCellClassName, params),
@@ -102,11 +102,18 @@ var ColumnInfo = /** @class */ (function () {
102
102
  checked: false,
103
103
  halfChecked: false,
104
104
  disabled: false,
105
+ // 分组层级
105
106
  level: 1,
107
+ // 跨行
106
108
  rowSpan: 1,
109
+ // 跨列
107
110
  colSpan: 1,
111
+ // 数据排序-自定义排序
108
112
  order: null,
113
+ // 数据排序-用于多列的先后顺序
109
114
  sortTime: 0,
115
+ // 列排序
116
+ customOrder: 0,
110
117
  renderWidth: 0,
111
118
  renderHeight: 0,
112
119
  resizeWidth: 0,
@@ -35,7 +35,7 @@ import TableFooterComponent from '../../footer';
35
35
  import tableProps from './props';
36
36
  import tableEmits from './emits';
37
37
  import VxeLoading from '../../loading/index';
38
- import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, restoreScrollListener } from './util';
38
+ import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, restoreScrollListener, getRootColumn } from './util';
39
39
  import { getSlotVNs } from '../../tools/vn';
40
40
  var isWebkit = browse['-webkit'] && !browse.edge;
41
41
  var resizableStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_WIDTH';
@@ -194,13 +194,9 @@ export default defineComponent({
194
194
  },
195
195
  // 存放数据校验相关信息
196
196
  validStore: {
197
- visible: false,
198
- row: null,
199
- column: null,
200
- content: '',
201
- rule: null,
202
- isArrow: false
197
+ visible: false
203
198
  },
199
+ validErrorMaps: {},
204
200
  // 导入相关信息
205
201
  importStore: {
206
202
  inited: false,
@@ -304,6 +300,7 @@ export default defineComponent({
304
300
  // 总的缓存数据集
305
301
  fullAllDataRowIdData: {},
306
302
  // 渲染中缓存数据
303
+ sourceDataRowIdData: {},
307
304
  fullDataRowIdData: {},
308
305
  fullColumnIdData: {},
309
306
  fullColumnFieldData: {},
@@ -467,6 +464,25 @@ export default defineComponent({
467
464
  var computeCustomOpts = computed(function () {
468
465
  return Object.assign({}, GlobalConfig.table.customConfig, props.customConfig);
469
466
  });
467
+ var computeFixedColumnSize = computed(function () {
468
+ var tableFullColumn = internalData.tableFullColumn;
469
+ var fixedSize = 0;
470
+ tableFullColumn.forEach(function (column) {
471
+ if (column.fixed) {
472
+ fixedSize++;
473
+ }
474
+ });
475
+ return fixedSize;
476
+ });
477
+ var computeIsMaxFixedColumn = computed(function () {
478
+ var fixedColumnSize = computeFixedColumnSize.value;
479
+ var columnOpts = computeColumnOpts.value;
480
+ var maxFixedSize = columnOpts.maxFixedSize;
481
+ if (maxFixedSize) {
482
+ return fixedColumnSize >= maxFixedSize;
483
+ }
484
+ return false;
485
+ });
470
486
  var computeTableBorder = computed(function () {
471
487
  var border = props.border;
472
488
  if (border === true) {
@@ -550,6 +566,8 @@ export default defineComponent({
550
566
  computeEmptyOpts: computeEmptyOpts,
551
567
  computeLoadingOpts: computeLoadingOpts,
552
568
  computeCustomOpts: computeCustomOpts,
569
+ computeFixedColumnSize: computeFixedColumnSize,
570
+ computeIsMaxFixedColumn: computeIsMaxFixedColumn,
553
571
  computeIsAllCheckboxDisabled: computeIsAllCheckboxDisabled
554
572
  };
555
573
  var $xetable = {
@@ -798,8 +816,8 @@ export default defineComponent({
798
816
  if (isCustomResizable) {
799
817
  var columnWidthStorage = getCustomStorageMap(resizableStorageKey)[id];
800
818
  if (columnWidthStorage) {
801
- XEUtils.each(columnWidthStorage, function (resizeWidth, field) {
802
- customMap_1[field] = { field: field, resizeWidth: resizeWidth };
819
+ XEUtils.each(columnWidthStorage, function (resizeWidth, colKey) {
820
+ customMap_1[colKey] = { resizeWidth: resizeWidth };
803
821
  });
804
822
  }
805
823
  }
@@ -809,12 +827,12 @@ export default defineComponent({
809
827
  if (columnFixedStorage) {
810
828
  var colFixeds = columnFixedStorage.split(',');
811
829
  colFixeds.forEach(function (fixConf) {
812
- var _a = fixConf.split('|'), field = _a[0], fixed = _a[1];
813
- if (customMap_1[field]) {
814
- customMap_1[field].fixed = fixed;
830
+ var _a = fixConf.split('|'), colKey = _a[0], fixed = _a[1];
831
+ if (customMap_1[colKey]) {
832
+ customMap_1[colKey].fixed = fixed;
815
833
  }
816
834
  else {
817
- customMap_1[field] = { field: field, fixed: fixed };
835
+ customMap_1[colKey] = { fixed: fixed };
818
836
  }
819
837
  });
820
838
  }
@@ -823,7 +841,15 @@ export default defineComponent({
823
841
  if (isCustomOrder) {
824
842
  var columnOrderStorage = getCustomStorageMap(orderStorageKey)[id];
825
843
  if (columnOrderStorage) {
826
- // 开发中...
844
+ // const colOrderSeqs = columnOrderStorage.split(',')
845
+ // colOrderSeqs.forEach((orderConf: any) => {
846
+ // const [colKey, order] = orderConf.split('|')
847
+ // if (customMap[colKey]) {
848
+ // customMap[colKey].order = order
849
+ // } else {
850
+ // customMap[colKey] = { order }
851
+ // }
852
+ // })
827
853
  }
828
854
  }
829
855
  // 自定义隐藏列
@@ -833,20 +859,20 @@ export default defineComponent({
833
859
  var colVisibles = columnVisibleStorage.split('|');
834
860
  var colHides = colVisibles[0] ? colVisibles[0].split(',') : [];
835
861
  var colShows = colVisibles[1] ? colVisibles[1].split(',') : [];
836
- colHides.forEach(function (field) {
837
- if (customMap_1[field]) {
838
- customMap_1[field].visible = false;
862
+ colHides.forEach(function (colKey) {
863
+ if (customMap_1[colKey]) {
864
+ customMap_1[colKey].visible = false;
839
865
  }
840
866
  else {
841
- customMap_1[field] = { field: field, visible: false };
867
+ customMap_1[colKey] = { visible: false };
842
868
  }
843
869
  });
844
- colShows.forEach(function (field) {
845
- if (customMap_1[field]) {
846
- customMap_1[field].visible = true;
870
+ colShows.forEach(function (colKey) {
871
+ if (customMap_1[colKey]) {
872
+ customMap_1[colKey].visible = true;
847
873
  }
848
874
  else {
849
- customMap_1[field] = { field: field, visible: true };
875
+ customMap_1[colKey] = { visible: true };
850
876
  }
851
877
  });
852
878
  }
@@ -858,9 +884,9 @@ export default defineComponent({
858
884
  keyMap_1[colKey] = column;
859
885
  }
860
886
  });
861
- XEUtils.each(customMap_1, function (_a, field) {
862
- var visible = _a.visible, resizeWidth = _a.resizeWidth, fixed = _a.fixed;
863
- var column = keyMap_1[field];
887
+ XEUtils.each(customMap_1, function (_a, colKey) {
888
+ var visible = _a.visible, resizeWidth = _a.resizeWidth, fixed = _a.fixed, order = _a.order;
889
+ var column = keyMap_1[colKey];
864
890
  if (column) {
865
891
  if (XEUtils.isNumber(resizeWidth)) {
866
892
  column.resizeWidth = resizeWidth;
@@ -871,6 +897,9 @@ export default defineComponent({
871
897
  if (fixed) {
872
898
  column.fixed = fixed;
873
899
  }
900
+ if (order) {
901
+ column.customOrder = order;
902
+ }
874
903
  }
875
904
  });
876
905
  }
@@ -2114,7 +2143,7 @@ export default defineComponent({
2114
2143
  internalData.tableSynchData = datas;
2115
2144
  // 克隆原数据,用于显示编辑状态,与编辑值做对比
2116
2145
  if (keepSource) {
2117
- internalData.tableSourceData = XEUtils.clone(fullData, true);
2146
+ tablePrivateMethods.cacheSourceMap(fullData);
2118
2147
  }
2119
2148
  if (process.env.NODE_ENV === 'development') {
2120
2149
  if (sYLoad) {
@@ -2866,35 +2895,22 @@ export default defineComponent({
2866
2895
  * @param {String} field 字段名
2867
2896
  */
2868
2897
  isUpdateByRow: function (row, field) {
2869
- var _a, _b;
2870
- var keepSource = props.keepSource, treeConfig = props.treeConfig;
2871
- var visibleColumn = internalData.visibleColumn, tableSourceData = internalData.tableSourceData, fullDataRowIdData = internalData.fullDataRowIdData;
2872
- var treeOpts = computeTreeOpts.value;
2898
+ var keepSource = props.keepSource;
2899
+ var tableFullColumn = internalData.tableFullColumn, fullDataRowIdData = internalData.fullDataRowIdData, sourceDataRowIdData = internalData.sourceDataRowIdData;
2873
2900
  if (keepSource) {
2874
- var oRow = void 0, property = void 0;
2875
- var rowid_2 = getRowid($xetable, row);
2901
+ var rowid = getRowid($xetable, row);
2876
2902
  // 新增的数据不需要检测
2877
- if (!fullDataRowIdData[rowid_2]) {
2903
+ if (!fullDataRowIdData[rowid]) {
2878
2904
  return false;
2879
2905
  }
2880
- if (treeConfig) {
2881
- var children = treeOpts.children;
2882
- var matchObj = XEUtils.findTree(tableSourceData, function (item) { return rowid_2 === getRowid($xetable, item); }, treeOpts);
2883
- row = Object.assign({}, row, (_a = {}, _a[children] = null, _a));
2884
- if (matchObj) {
2885
- oRow = Object.assign({}, matchObj.item, (_b = {}, _b[children] = null, _b));
2886
- }
2887
- }
2888
- else {
2889
- var oRowIndex = fullDataRowIdData[rowid_2].index;
2890
- oRow = tableSourceData[oRowIndex];
2891
- }
2892
- if (oRow) {
2906
+ var oldRest = sourceDataRowIdData[rowid];
2907
+ if (oldRest) {
2908
+ var oRow = oldRest.row;
2893
2909
  if (arguments.length > 1) {
2894
2910
  return !eqCellValue(oRow, row, field);
2895
2911
  }
2896
- for (var index = 0, len = visibleColumn.length; index < len; index++) {
2897
- property = visibleColumn[index].field;
2912
+ for (var index = 0, len = tableFullColumn.length; index < len; index++) {
2913
+ var property = tableFullColumn[index].field;
2898
2914
  if (property && !eqCellValue(oRow, row, property)) {
2899
2915
  return true;
2900
2916
  }
@@ -3033,8 +3049,20 @@ export default defineComponent({
3033
3049
  */
3034
3050
  setColumnFixed: function (fieldOrColumn, fixed) {
3035
3051
  var column = handleFieldOrColumn($xetable, fieldOrColumn);
3036
- if (column && column.fixed !== fixed) {
3037
- XEUtils.eachTree([column], function (column) {
3052
+ var targetColumn = getRootColumn($xetable, column);
3053
+ var isMaxFixedColumn = computeIsMaxFixedColumn.value;
3054
+ if (targetColumn && targetColumn.fixed !== fixed) {
3055
+ // 是否超过最大固定列数量
3056
+ if (!targetColumn.fixed && isMaxFixedColumn) {
3057
+ if (VXETable.modal) {
3058
+ VXETable.modal.message({
3059
+ status: 'error',
3060
+ content: GlobalConfig.i18n('vxe.table.maxFixedCol')
3061
+ });
3062
+ }
3063
+ return nextTick();
3064
+ }
3065
+ XEUtils.eachTree([targetColumn], function (column) {
3038
3066
  column.fixed = fixed;
3039
3067
  });
3040
3068
  tablePrivateMethods.saveCustomFixed();
@@ -3047,8 +3075,9 @@ export default defineComponent({
3047
3075
  */
3048
3076
  clearColumnFixed: function (fieldOrColumn) {
3049
3077
  var column = handleFieldOrColumn($xetable, fieldOrColumn);
3050
- if (column && column.fixed) {
3051
- XEUtils.eachTree([column], function (column) {
3078
+ var targetColumn = getRootColumn($xetable, column);
3079
+ if (targetColumn && targetColumn.fixed) {
3080
+ XEUtils.eachTree([targetColumn], function (column) {
3052
3081
  column.fixed = null;
3053
3082
  });
3054
3083
  tablePrivateMethods.saveCustomFixed();
@@ -3106,7 +3135,7 @@ export default defineComponent({
3106
3135
  * 如果已关联工具栏,则会同步更新
3107
3136
  */
3108
3137
  resetColumn: function (options) {
3109
- var tableFullColumn = internalData.tableFullColumn;
3138
+ var collectColumn = internalData.collectColumn;
3110
3139
  var customOpts = computeCustomOpts.value;
3111
3140
  var checkMethod = customOpts.checkMethod;
3112
3141
  var opts = Object.assign({
@@ -3114,7 +3143,7 @@ export default defineComponent({
3114
3143
  resizable: options === true,
3115
3144
  fixed: options === true
3116
3145
  }, options);
3117
- tableFullColumn.forEach(function (column) {
3146
+ XEUtils.eachTree(collectColumn, function (column) {
3118
3147
  if (opts.resizable) {
3119
3148
  column.resizeWidth = 0;
3120
3149
  }
@@ -3294,22 +3323,22 @@ export default defineComponent({
3294
3323
  var radioOpts = computeRadioOpts.value;
3295
3324
  var treeOpts = computeTreeOpts.value;
3296
3325
  if (radioOpts.reserve && radioReserveRow) {
3297
- var rowid_3 = getRowid($xetable, radioReserveRow);
3326
+ var rowid_2 = getRowid($xetable, radioReserveRow);
3298
3327
  if (isFull) {
3299
- if (!fullDataRowIdData[rowid_3]) {
3328
+ if (!fullDataRowIdData[rowid_2]) {
3300
3329
  return radioReserveRow;
3301
3330
  }
3302
3331
  }
3303
3332
  else {
3304
3333
  var rowkey_2 = getRowkey($xetable);
3305
3334
  if (treeConfig) {
3306
- var matchObj = XEUtils.findTree(afterFullData, function (row) { return rowid_3 === XEUtils.get(row, rowkey_2); }, treeOpts);
3335
+ var matchObj = XEUtils.findTree(afterFullData, function (row) { return rowid_2 === XEUtils.get(row, rowkey_2); }, treeOpts);
3307
3336
  if (matchObj) {
3308
3337
  return radioReserveRow;
3309
3338
  }
3310
3339
  }
3311
3340
  else {
3312
- if (!afterFullData.some(function (row) { return rowid_3 === XEUtils.get(row, rowkey_2); })) {
3341
+ if (!afterFullData.some(function (row) { return rowid_2 === XEUtils.get(row, rowkey_2); })) {
3313
3342
  return radioReserveRow;
3314
3343
  }
3315
3344
  }
@@ -3459,16 +3488,16 @@ export default defineComponent({
3459
3488
  var selectRow = reactData.selectRow;
3460
3489
  var treeOpts = computeTreeOpts.value;
3461
3490
  if (selectRow) {
3462
- var rowid_4 = getRowid($xetable, selectRow);
3491
+ var rowid_3 = getRowid($xetable, selectRow);
3463
3492
  if (isFull) {
3464
- if (!fullDataRowIdData[rowid_4]) {
3493
+ if (!fullDataRowIdData[rowid_3]) {
3465
3494
  return selectRow;
3466
3495
  }
3467
3496
  }
3468
3497
  else {
3469
3498
  if (treeConfig) {
3470
3499
  var rowkey_3 = getRowkey($xetable);
3471
- var matchObj = XEUtils.findTree(afterFullData, function (row) { return rowid_4 === XEUtils.get(row, rowkey_3); }, treeOpts);
3500
+ var matchObj = XEUtils.findTree(afterFullData, function (row) { return rowid_3 === XEUtils.get(row, rowkey_3); }, treeOpts);
3472
3501
  if (matchObj) {
3473
3502
  return selectRow;
3474
3503
  }
@@ -4043,7 +4072,7 @@ export default defineComponent({
4043
4072
  if (customVal && validStore.visible) {
4044
4073
  setCellValue(row_1, column_3, cellValue);
4045
4074
  }
4046
- $xetable.clearValidate();
4075
+ $xetable.clearValidate(row_1, column_3);
4047
4076
  })
4048
4077
  .catch(function (_a) {
4049
4078
  var rule = _a.rule;
@@ -4794,7 +4823,7 @@ export default defineComponent({
4794
4823
  var fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData, tableFullData = internalData.tableFullData, tableFullTreeData = internalData.tableFullTreeData;
4795
4824
  var rowkey = getRowkey($xetable);
4796
4825
  var isLazy = treeConfig && treeOpts.lazy;
4797
- var handleCache = function (row, index, items, path, parent, nodes) {
4826
+ var handleRow = function (row, index, items, path, parent, nodes) {
4798
4827
  var rowid = getRowid($xetable, row);
4799
4828
  var seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
4800
4829
  var level = nodes ? nodes.length - 1 : 0;
@@ -4816,11 +4845,38 @@ export default defineComponent({
4816
4845
  }
4817
4846
  fullAllDataRowIdData = internalData.fullAllDataRowIdData = {};
4818
4847
  if (treeConfig) {
4819
- XEUtils.eachTree(tableFullTreeData, handleCache, treeOpts);
4848
+ XEUtils.eachTree(tableFullTreeData, handleRow, treeOpts);
4849
+ }
4850
+ else {
4851
+ tableFullData.forEach(handleRow);
4852
+ }
4853
+ },
4854
+ cacheSourceMap: function (fullData) {
4855
+ var treeConfig = props.treeConfig;
4856
+ var treeOpts = computeTreeOpts.value;
4857
+ var sourceDataRowIdData = internalData.sourceDataRowIdData;
4858
+ var sourceData = XEUtils.clone(fullData, true);
4859
+ var rowkey = getRowkey($xetable);
4860
+ sourceDataRowIdData = internalData.sourceDataRowIdData = {};
4861
+ var handleSourceRow = function (row) {
4862
+ var rowid = getRowid($xetable, row);
4863
+ if (eqEmptyValue(rowid)) {
4864
+ rowid = getRowUniqueId();
4865
+ XEUtils.set(row, rowkey, rowid);
4866
+ }
4867
+ sourceDataRowIdData[rowid] = {
4868
+ row: row,
4869
+ rowid: rowid
4870
+ };
4871
+ };
4872
+ // 源数据缓存
4873
+ if (treeConfig && !treeOpts.transform) {
4874
+ XEUtils.eachTree(sourceData, handleSourceRow, treeOpts);
4820
4875
  }
4821
4876
  else {
4822
- tableFullData.forEach(handleCache);
4877
+ sourceData.forEach(handleSourceRow);
4823
4878
  }
4879
+ internalData.tableSourceData = sourceData;
4824
4880
  },
4825
4881
  /**
4826
4882
  * 指定列宽的列进行拆分
@@ -205,6 +205,22 @@ export function destroyColumn($xetable, column) {
205
205
  }
206
206
  reactData.staticColumns = staticColumns.slice(0);
207
207
  }
208
+ export function getRootColumn($xetable, column) {
209
+ var internalData = $xetable.internalData;
210
+ var fullColumnIdData = internalData.fullColumnIdData;
211
+ if (!column) {
212
+ return null;
213
+ }
214
+ var parentColId = column.parentId;
215
+ while (fullColumnIdData[parentColId]) {
216
+ var column_1 = fullColumnIdData[parentColId].column;
217
+ parentColId = column_1.parentId;
218
+ if (!parentColId) {
219
+ return column_1;
220
+ }
221
+ }
222
+ return column;
223
+ }
208
224
  export function mergeBodyMethod(mergeList, _rowIndex, _columnIndex) {
209
225
  for (var mIndex = 0; mIndex < mergeList.length; mIndex++) {
210
226
  var _a = mergeList[mIndex], mergeRowIndex = _a.row, mergeColIndex = _a.col, mergeRowspan = _a.rowspan, mergeColspan = _a.colspan;
@@ -1222,15 +1222,17 @@
1222
1222
  position: relative;
1223
1223
  }
1224
1224
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-cell--valid {
1225
- width: 320px;
1225
+ width: 100%;
1226
1226
  position: absolute;
1227
1227
  left: 50%;
1228
1228
  font-size: 12px;
1229
1229
  line-height: 1.2em;
1230
1230
  transform: translateX(-50%);
1231
- text-align: center;
1231
+ text-align: left;
1232
1232
  pointer-events: none;
1233
1233
  z-index: 4;
1234
+ padding-left: var(--vxe-table-cell-padding-left);
1235
+ padding-right: var(--vxe-table-cell-padding-right);
1234
1236
  }
1235
1237
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-cell--valid .vxe-cell--valid-msg {
1236
1238
  display: inline-block;
@@ -1247,16 +1249,8 @@
1247
1249
  border-color: var(--vxe-table-validate-error-color);
1248
1250
  }
1249
1251
  .vxe-table--render-default .vxe-body--row:last-child .vxe-cell--valid {
1250
- top: -1.3em;
1251
- }
1252
- .vxe-table--render-default .vxe-body--row:first-child:last-child .vxe-cell--valid {
1253
1252
  top: calc(100% - 1.3em);
1254
1253
  }
1255
- .vxe-table--render-default .vxe-body--column:first-child .vxe-cell--valid {
1256
- left: 10px;
1257
- transform: translateX(0);
1258
- text-align: left;
1259
- }
1260
1254
  .vxe-table--render-default .vxe-body--row.row--new > .vxe-body--column {
1261
1255
  position: relative;
1262
1256
  }
@@ -1275,8 +1269,8 @@
1275
1269
  }
1276
1270
  .vxe-table--render-default .vxe-body--column.col--dirty:before {
1277
1271
  content: "";
1278
- top: var(--vxe-table-cell-dirty-width);
1279
- left: var(--vxe-table-cell-dirty-width);
1272
+ top: calc(var(--vxe-table-cell-dirty-width) * -1);
1273
+ left: calc(var(--vxe-table-cell-dirty-width) * -1);
1280
1274
  position: absolute;
1281
1275
  border-width: var(--vxe-table-cell-dirty-width);
1282
1276
  border-style: solid;