vxe-table 3.13.5 → 3.13.6

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 (134) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +2 -1
  4. package/es/locale/lang/de-DE.js +2 -1
  5. package/es/locale/lang/en-US.js +2 -1
  6. package/es/locale/lang/es-ES.js +2 -1
  7. package/es/locale/lang/fr-FR.js +2 -1
  8. package/es/locale/lang/hu-HU.js +2 -1
  9. package/es/locale/lang/hy-AM.js +2 -1
  10. package/es/locale/lang/id-ID.js +2 -1
  11. package/es/locale/lang/it-IT.js +2 -1
  12. package/es/locale/lang/ja-JP.js +2 -1
  13. package/es/locale/lang/ko-KR.js +2 -1
  14. package/es/locale/lang/nb-NO.js +2 -1
  15. package/es/locale/lang/pt-BR.js +2 -1
  16. package/es/locale/lang/ru-RU.js +2 -1
  17. package/es/locale/lang/th-TH.js +2 -1
  18. package/es/locale/lang/ug-CN.js +2 -1
  19. package/es/locale/lang/uk-UA.js +2 -1
  20. package/es/locale/lang/vi-VN.js +2 -1
  21. package/es/locale/lang/zh-CHT.js +2 -1
  22. package/es/locale/lang/zh-CN.js +2 -1
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/table/module/export/export-panel.js +7 -4
  26. package/es/table/module/export/mixin.js +2 -2
  27. package/es/table/src/methods.js +247 -215
  28. package/es/table/style.css +1 -1
  29. package/es/table/style.min.css +1 -1
  30. package/es/ui/index.js +1 -1
  31. package/es/ui/src/log.js +1 -1
  32. package/es/vxe-table/style.css +1 -1
  33. package/es/vxe-table/style.min.css +1 -1
  34. package/lib/index.css +1 -1
  35. package/lib/index.min.css +1 -1
  36. package/lib/index.umd.js +296 -271
  37. package/lib/index.umd.min.js +1 -1
  38. package/lib/locale/lang/ar-EG.js +2 -1
  39. package/lib/locale/lang/ar-EG.min.js +1 -1
  40. package/lib/locale/lang/de-DE.js +2 -1
  41. package/lib/locale/lang/de-DE.min.js +1 -1
  42. package/lib/locale/lang/en-US.js +2 -1
  43. package/lib/locale/lang/en-US.min.js +1 -1
  44. package/lib/locale/lang/en-US.umd.js +2 -1
  45. package/lib/locale/lang/es-ES.js +2 -1
  46. package/lib/locale/lang/es-ES.min.js +1 -1
  47. package/lib/locale/lang/es-ES.umd.js +2 -1
  48. package/lib/locale/lang/fr-FR.js +2 -1
  49. package/lib/locale/lang/fr-FR.min.js +1 -1
  50. package/lib/locale/lang/hu-HU.js +2 -1
  51. package/lib/locale/lang/hu-HU.min.js +1 -1
  52. package/lib/locale/lang/hu-HU.umd.js +2 -1
  53. package/lib/locale/lang/hy-AM.js +2 -1
  54. package/lib/locale/lang/hy-AM.min.js +1 -1
  55. package/lib/locale/lang/id-ID.js +2 -1
  56. package/lib/locale/lang/id-ID.min.js +1 -1
  57. package/lib/locale/lang/it-IT.js +2 -1
  58. package/lib/locale/lang/it-IT.min.js +1 -1
  59. package/lib/locale/lang/ja-JP.js +2 -1
  60. package/lib/locale/lang/ja-JP.min.js +1 -1
  61. package/lib/locale/lang/ja-JP.umd.js +2 -1
  62. package/lib/locale/lang/ko-KR.js +2 -1
  63. package/lib/locale/lang/ko-KR.min.js +1 -1
  64. package/lib/locale/lang/ko-KR.umd.js +2 -1
  65. package/lib/locale/lang/nb-NO.js +2 -1
  66. package/lib/locale/lang/nb-NO.min.js +1 -1
  67. package/lib/locale/lang/pt-BR.js +2 -1
  68. package/lib/locale/lang/pt-BR.min.js +1 -1
  69. package/lib/locale/lang/pt-BR.umd.js +2 -1
  70. package/lib/locale/lang/ru-RU.js +2 -1
  71. package/lib/locale/lang/ru-RU.min.js +1 -1
  72. package/lib/locale/lang/ru-RU.umd.js +2 -1
  73. package/lib/locale/lang/th-TH.js +2 -1
  74. package/lib/locale/lang/th-TH.min.js +1 -1
  75. package/lib/locale/lang/ug-CN.js +2 -1
  76. package/lib/locale/lang/ug-CN.min.js +1 -1
  77. package/lib/locale/lang/uk-UA.js +2 -1
  78. package/lib/locale/lang/uk-UA.min.js +1 -1
  79. package/lib/locale/lang/uk-UA.umd.js +2 -1
  80. package/lib/locale/lang/vi-VN.js +2 -1
  81. package/lib/locale/lang/vi-VN.min.js +1 -1
  82. package/lib/locale/lang/zh-CHT.js +2 -1
  83. package/lib/locale/lang/zh-CHT.min.js +1 -1
  84. package/lib/locale/lang/zh-CHT.umd.js +2 -1
  85. package/lib/locale/lang/zh-CN.js +2 -1
  86. package/lib/locale/lang/zh-CN.min.js +1 -1
  87. package/lib/locale/lang/zh-CN.umd.js +2 -1
  88. package/lib/style.css +1 -1
  89. package/lib/style.min.css +1 -1
  90. package/lib/table/module/export/export-panel.js +7 -4
  91. package/lib/table/module/export/export-panel.min.js +1 -1
  92. package/lib/table/module/export/mixin.js +2 -2
  93. package/lib/table/module/export/mixin.min.js +1 -1
  94. package/lib/table/src/methods.js +283 -262
  95. package/lib/table/src/methods.min.js +1 -1
  96. package/lib/table/style/style.css +1 -1
  97. package/lib/table/style/style.min.css +1 -1
  98. package/lib/ui/index.js +1 -1
  99. package/lib/ui/index.min.js +1 -1
  100. package/lib/ui/src/log.js +1 -1
  101. package/lib/ui/src/log.min.js +1 -1
  102. package/lib/vxe-table/style/style.css +1 -1
  103. package/lib/vxe-table/style/style.min.css +1 -1
  104. package/package.json +2 -2
  105. package/packages/locale/lang/ar-EG.ts +2 -1
  106. package/packages/locale/lang/de-DE.ts +2 -1
  107. package/packages/locale/lang/en-US.ts +2 -1
  108. package/packages/locale/lang/es-ES.ts +2 -1
  109. package/packages/locale/lang/fr-FR.ts +2 -1
  110. package/packages/locale/lang/hu-HU.ts +2 -1
  111. package/packages/locale/lang/hy-AM.ts +2 -1
  112. package/packages/locale/lang/id-ID.ts +2 -1
  113. package/packages/locale/lang/it-IT.ts +2 -1
  114. package/packages/locale/lang/ja-JP.ts +2 -1
  115. package/packages/locale/lang/ko-KR.ts +2 -1
  116. package/packages/locale/lang/nb-NO.ts +2 -1
  117. package/packages/locale/lang/pt-BR.ts +2 -1
  118. package/packages/locale/lang/ru-RU.ts +2 -1
  119. package/packages/locale/lang/th-TH.ts +2 -1
  120. package/packages/locale/lang/ug-CN.ts +2 -1
  121. package/packages/locale/lang/uk-UA.ts +2 -1
  122. package/packages/locale/lang/vi-VN.ts +2 -1
  123. package/packages/locale/lang/zh-CHT.ts +2 -1
  124. package/packages/locale/lang/zh-CN.ts +2 -1
  125. package/packages/table/module/export/export-panel.ts +7 -4
  126. package/packages/table/module/export/mixin.ts +2 -2
  127. package/packages/table/src/methods.ts +264 -216
  128. package/styles/components/table.scss +1 -1
  129. /package/es/{iconfont.1740038065641.ttf → iconfont.1740103990490.ttf} +0 -0
  130. /package/es/{iconfont.1740038065641.woff → iconfont.1740103990490.woff} +0 -0
  131. /package/es/{iconfont.1740038065641.woff2 → iconfont.1740103990490.woff2} +0 -0
  132. /package/lib/{iconfont.1740038065641.ttf → iconfont.1740103990490.ttf} +0 -0
  133. /package/lib/{iconfont.1740038065641.woff → iconfont.1740103990490.woff} +0 -0
  134. /package/lib/{iconfont.1740038065641.woff2 → iconfont.1740103990490.woff2} +0 -0
@@ -1030,7 +1030,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
1030
1030
  isMerge: hasMerge,
1031
1031
  useStyle: true,
1032
1032
  current: 'current',
1033
- modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
1033
+ modes: ['current', 'selected', 'empty'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
1034
1034
  }, options);
1035
1035
  const types = defOpts.types || XEUtils.keys(exportOpts._typeMaps);
1036
1036
  const modes = defOpts.modes || [];
@@ -1206,7 +1206,7 @@ export default {
1206
1206
  isMerge: hasMerge,
1207
1207
  useStyle: true,
1208
1208
  current: 'current',
1209
- modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
1209
+ modes: ['current', 'selected', 'empty'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
1210
1210
  download: true,
1211
1211
  type: 'csv'
1212
1212
  // filename: '',
@@ -38,8 +38,9 @@ const setCustomStorageMap = (id, data) => {
38
38
  maps._v = version;
39
39
  localStorage.setItem(customStorageKey, XEUtils.toJSONString(maps));
40
40
  };
41
- const getRecoverRowMaps = (_vm, keyMaps) => {
42
- const { fullAllDataRowIdData } = _vm;
41
+ const getRecoverRowMaps = ($xeTable, keyMaps) => {
42
+ const internalData = $xeTable;
43
+ const { fullAllDataRowIdData } = internalData;
43
44
  const restKeys = {};
44
45
  XEUtils.each(keyMaps, (row, rowid) => {
45
46
  if (fullAllDataRowIdData[rowid]) {
@@ -48,8 +49,9 @@ const getRecoverRowMaps = (_vm, keyMaps) => {
48
49
  });
49
50
  return restKeys;
50
51
  };
51
- function handleReserveRow(_vm, reserveRowMap) {
52
- const { fullDataRowIdData } = _vm;
52
+ function handleReserveRow($xeTable, reserveRowMap) {
53
+ const internalData = $xeTable;
54
+ const { fullDataRowIdData } = internalData;
53
55
  const reserveList = [];
54
56
  XEUtils.each(reserveRowMap, (item, rowid) => {
55
57
  if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
@@ -716,6 +718,215 @@ function updateStyle($xeTable) {
716
718
  }
717
719
  return $xeTable.$nextTick();
718
720
  }
721
+ function handleRadioReserveRow($xeTable, row) {
722
+ const internalData = $xeTable;
723
+ const radioOpts = $xeTable.computeRadioOpts;
724
+ if (radioOpts.reserve) {
725
+ internalData.radioReserveRow = row;
726
+ }
727
+ }
728
+ function handleCheckboxReserveRow($xeTable, row, checked) {
729
+ const internalData = $xeTable;
730
+ const { checkboxReserveRowMap } = internalData;
731
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
732
+ if (checkboxOpts.reserve) {
733
+ const rowid = getRowid($xeTable, row);
734
+ if (checked) {
735
+ checkboxReserveRowMap[rowid] = row;
736
+ }
737
+ else if (checkboxReserveRowMap[rowid]) {
738
+ delete checkboxReserveRowMap[rowid];
739
+ }
740
+ }
741
+ }
742
+ function handleCheckedRadioRow($xeTable, row, isForce) {
743
+ const reactData = $xeTable;
744
+ const radioOpts = $xeTable.computeRadioOpts;
745
+ const { checkMethod } = radioOpts;
746
+ if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
747
+ reactData.selectRadioRow = row;
748
+ handleRadioReserveRow($xeTable, row);
749
+ }
750
+ return $xeTable.$nextTick();
751
+ }
752
+ function handleCheckedCheckboxRow($xeTable, rows, value, isForce) {
753
+ if (rows && !XEUtils.isArray(rows)) {
754
+ rows = [rows];
755
+ }
756
+ $xeTable.handleBatchSelectRows(rows, !!value, isForce);
757
+ $xeTable.checkSelectionStatus();
758
+ return $xeTable.$nextTick();
759
+ }
760
+ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
761
+ const props = $xeTable;
762
+ const reactData = $xeTable;
763
+ const internalData = $xeTable;
764
+ const { treeConfig } = props;
765
+ const { selectCheckboxMaps } = reactData;
766
+ const { afterFullData, checkboxReserveRowMap } = internalData;
767
+ const treeOpts = $xeTable.computeTreeOpts;
768
+ const childrenField = treeOpts.children || treeOpts.childrenField;
769
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
770
+ const { checkField, reserve, checkMethod } = checkboxOpts;
771
+ const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
772
+ const selectRowMaps = {};
773
+ /**
774
+ * 绑定属性方式(高性能,有污染)
775
+ * 必须在行数据存在对应的属性,否则将不响应
776
+ */
777
+ if (checkField) {
778
+ const checkValFn = (row) => {
779
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
780
+ if (checked) {
781
+ selectRowMaps[getRowid($xeTable, row)] = row;
782
+ }
783
+ XEUtils.set(row, checkField, checked);
784
+ }
785
+ if (treeConfig && indeterminateField) {
786
+ XEUtils.set(row, indeterminateField, false);
787
+ }
788
+ };
789
+ // 如果存在选中方法
790
+ // 如果方法成立,则更新值,否则忽略该数据
791
+ if (treeConfig) {
792
+ XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
793
+ }
794
+ else {
795
+ afterFullData.forEach(checkValFn);
796
+ }
797
+ }
798
+ else {
799
+ /**
800
+ * 默认方式(低性能,无污染)
801
+ * 无需任何属性,直接绑定
802
+ */
803
+ if (treeConfig) {
804
+ if (checked) {
805
+ /**
806
+ * 如果是树勾选
807
+ * 如果方法成立,则添加到临时集合中
808
+ */
809
+ XEUtils.eachTree(afterFullData, (row) => {
810
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
811
+ selectRowMaps[getRowid($xeTable, row)] = row;
812
+ }
813
+ }, { children: childrenField });
814
+ }
815
+ else {
816
+ /**
817
+ * 如果是树取消
818
+ * 如果方法成立,则不添加到临时集合中
819
+ */
820
+ if (!isForce && checkMethod) {
821
+ XEUtils.eachTree(afterFullData, (row) => {
822
+ const rowid = getRowid($xeTable, row);
823
+ if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
824
+ selectRowMaps[rowid] = row;
825
+ }
826
+ }, { children: childrenField });
827
+ }
828
+ }
829
+ }
830
+ else {
831
+ if (checked) {
832
+ /**
833
+ * 如果是行勾选
834
+ * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
835
+ * 如果不存在选中方法,则添加所有数据到临时集合中
836
+ */
837
+ if (!isForce && checkMethod) {
838
+ afterFullData.forEach((row) => {
839
+ const rowid = getRowid($xeTable, row);
840
+ if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
841
+ selectRowMaps[rowid] = row;
842
+ }
843
+ });
844
+ }
845
+ else {
846
+ afterFullData.forEach(row => {
847
+ selectRowMaps[getRowid($xeTable, row)] = row;
848
+ });
849
+ }
850
+ }
851
+ else {
852
+ /**
853
+ * 如果是行取消
854
+ * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
855
+ * 如果不存在选中方法,无需处理,临时集合默认为空
856
+ */
857
+ if (!isForce && checkMethod) {
858
+ afterFullData.forEach((row) => {
859
+ const rowid = getRowid($xeTable, row);
860
+ if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
861
+ selectRowMaps[rowid] = row;
862
+ }
863
+ });
864
+ }
865
+ }
866
+ }
867
+ }
868
+ if (reserve) {
869
+ if (checked) {
870
+ XEUtils.each(selectRowMaps, (row, rowid) => {
871
+ checkboxReserveRowMap[rowid] = row;
872
+ });
873
+ }
874
+ else {
875
+ afterFullData.forEach((row) => handleCheckboxReserveRow($xeTable, row, false));
876
+ }
877
+ }
878
+ reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
879
+ reactData.isAllSelected = checked;
880
+ reactData.isIndeterminate = false;
881
+ reactData.treeIndeterminateMaps = {};
882
+ internalData.treeIndeterminateRowMaps = {};
883
+ $xeTable.checkSelectionStatus();
884
+ return $xeTable.$nextTick();
885
+ }
886
+ // 还原展开、选中等相关状态
887
+ function handleReserveStatus($xeTable) {
888
+ const props = $xeTable;
889
+ const reactData = $xeTable;
890
+ const internalData = $xeTable;
891
+ const { treeConfig } = props;
892
+ const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData;
893
+ const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
894
+ const expandOpts = $xeTable.computeExpandOpts;
895
+ const treeOpts = $xeTable.computeTreeOpts;
896
+ const radioOpts = $xeTable.computeRadioOpts;
897
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
898
+ // 单选框
899
+ if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
900
+ reactData.selectRadioRow = null; // 刷新单选行状态
901
+ }
902
+ // 还原保留选中状态
903
+ if (radioOpts.reserve && radioReserveRow) {
904
+ const rowid = getRowid($xeTable, radioReserveRow);
905
+ if (fullDataRowIdData[rowid]) {
906
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
907
+ }
908
+ }
909
+ // 复选框
910
+ reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps); // 刷新多选行状态
911
+ // 还原保留选中状态
912
+ if (checkboxOpts.reserve) {
913
+ handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true);
914
+ }
915
+ if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
916
+ reactData.currentRow = null; // 刷新当前行状态
917
+ }
918
+ // 行展开
919
+ reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {}; // 刷新行展开状态
920
+ // 还原保留状态
921
+ if (expandColumn && expandOpts.reserve) {
922
+ $xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true);
923
+ }
924
+ // 树展开
925
+ reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {}; // 刷新树展开状态
926
+ if (treeConfig && treeOpts.reserve) {
927
+ $xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true);
928
+ }
929
+ }
719
930
  function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
720
931
  const reactData = $xeTable;
721
932
  const { rowHeightStore } = reactData;
@@ -2162,7 +2373,7 @@ const Methods = {
2162
2373
  }
2163
2374
  }
2164
2375
  }
2165
- this.handleReserveStatus();
2376
+ handleReserveStatus($xeTable);
2166
2377
  this.checkSelectionStatus();
2167
2378
  return new Promise(resolve => {
2168
2379
  this.$nextTick()
@@ -4987,10 +5198,11 @@ const Methods = {
4987
5198
  * 处理默认勾选
4988
5199
  */
4989
5200
  handleDefaultSelectionChecked() {
5201
+ const $xeTable = this;
4990
5202
  const { fullDataRowIdData, checkboxOpts } = this;
4991
5203
  const { checkAll, checkRowKeys } = checkboxOpts;
4992
5204
  if (checkAll) {
4993
- this.handleCheckedAllCheckboxRow(true, true);
5205
+ handleCheckedAllCheckboxRow($xeTable, true, true);
4994
5206
  }
4995
5207
  else if (checkRowKeys) {
4996
5208
  const defSelection = [];
@@ -4999,17 +5211,12 @@ const Methods = {
4999
5211
  defSelection.push(fullDataRowIdData[rowid].row);
5000
5212
  }
5001
5213
  });
5002
- this.handleCheckedCheckboxRow(defSelection, true, true);
5214
+ handleCheckedCheckboxRow($xeTable, defSelection, true, true);
5003
5215
  }
5004
5216
  },
5005
5217
  handleCheckedCheckboxRow(rows, value, isForce) {
5006
5218
  const $xeTable = this;
5007
- if (rows && !XEUtils.isArray(rows)) {
5008
- rows = [rows];
5009
- }
5010
- $xeTable.handleBatchSelectRows(rows, !!value, isForce);
5011
- $xeTable.checkSelectionStatus();
5012
- return this.$nextTick();
5219
+ return handleCheckedCheckboxRow($xeTable, rows, value, isForce);
5013
5220
  },
5014
5221
  /**
5015
5222
  * 用于多选行,设置行为选中状态,第二个参数为选中与否
@@ -5021,7 +5228,7 @@ const Methods = {
5021
5228
  if (rows && !XEUtils.isArray(rows)) {
5022
5229
  rows = [rows];
5023
5230
  }
5024
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
5231
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
5025
5232
  },
5026
5233
  setCheckboxRowKey(keys, checked) {
5027
5234
  const $xeTable = this;
@@ -5037,7 +5244,7 @@ const Methods = {
5037
5244
  rows.push(rowRest.row);
5038
5245
  }
5039
5246
  });
5040
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
5247
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
5041
5248
  },
5042
5249
  isCheckedByCheckboxRow(row) {
5043
5250
  const $xeTable = this;
@@ -5106,7 +5313,7 @@ const Methods = {
5106
5313
  if (indeterminateField) {
5107
5314
  XEUtils.set(row, indeterminateField, false);
5108
5315
  }
5109
- $xeTable.handleCheckboxReserveRow(row, checked);
5316
+ handleCheckboxReserveRow($xeTable, row, checked);
5110
5317
  }
5111
5318
  }, { children: transform ? mapChildrenField : childrenField });
5112
5319
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -5117,7 +5324,7 @@ const Methods = {
5117
5324
  rows.forEach(row => {
5118
5325
  if (isForce || (!checkMethod || checkMethod({ row }))) {
5119
5326
  XEUtils.set(row, checkField, checked);
5120
- $xeTable.handleCheckboxReserveRow(row, checked);
5327
+ handleCheckboxReserveRow($xeTable, row, checked);
5121
5328
  }
5122
5329
  });
5123
5330
  }
@@ -5138,7 +5345,7 @@ const Methods = {
5138
5345
  delete selectRowMaps[rowid];
5139
5346
  }
5140
5347
  }
5141
- $xeTable.handleCheckboxReserveRow(row, checked);
5348
+ handleCheckboxReserveRow($xeTable, row, checked);
5142
5349
  }
5143
5350
  }, { children: transform ? mapChildrenField : childrenField });
5144
5351
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -5158,7 +5365,7 @@ const Methods = {
5158
5365
  delete selectRowMaps[rowid];
5159
5366
  }
5160
5367
  }
5161
- $xeTable.handleCheckboxReserveRow(row, checked);
5368
+ handleCheckboxReserveRow($xeTable, row, checked);
5162
5369
  }
5163
5370
  });
5164
5371
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -5194,6 +5401,7 @@ const Methods = {
5194
5401
  }
5195
5402
  },
5196
5403
  triggerCheckRowEvent(evnt, params, checked) {
5404
+ const $xeTable = this;
5197
5405
  const { checkboxOpts, afterFullData } = this;
5198
5406
  const { checkMethod, trigger } = checkboxOpts;
5199
5407
  const { row } = params;
@@ -5210,7 +5418,7 @@ const Methods = {
5210
5418
  if (_rowIndex !== _firstRowIndex) {
5211
5419
  this.setAllCheckboxRow(false);
5212
5420
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
5213
- this.handleCheckedCheckboxRow(rangeRows, true, false);
5421
+ handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
5214
5422
  this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
5215
5423
  return;
5216
5424
  }
@@ -5239,147 +5447,13 @@ const Methods = {
5239
5447
  $xeTable.checkSelectionStatus();
5240
5448
  return $xeTable.$nextTick();
5241
5449
  },
5242
- handleCheckedAllCheckboxRow(checked, isForce) {
5243
- const $xeTable = this;
5244
- const reactData = $xeTable;
5245
- const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this;
5246
- const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts;
5247
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5248
- const childrenField = treeOpts.children || treeOpts.childrenField;
5249
- const selectRowMaps = {};
5250
- // 疑惑!
5251
- if (!treeConfig) {
5252
- XEUtils.each(selectCheckboxMaps, (row, rowid) => {
5253
- if (!afterFullRowMaps[rowid]) {
5254
- selectRowMaps[rowid] = row;
5255
- }
5256
- });
5257
- }
5258
- // 疑惑!
5259
- if (checkStrictly) {
5260
- this.isAllSelected = checked;
5261
- }
5262
- else {
5263
- /**
5264
- * 绑定属性方式(高性能,有污染)
5265
- * 必须在行数据存在对应的属性,否则将不响应
5266
- */
5267
- if (checkField) {
5268
- const checkValFn = (row) => {
5269
- if (isForce || (!checkMethod || checkMethod({ row }))) {
5270
- if (checked) {
5271
- selectRowMaps[getRowid(this, row)] = row;
5272
- }
5273
- XEUtils.set(row, checkField, checked);
5274
- }
5275
- if (treeConfig && indeterminateField) {
5276
- XEUtils.set(row, indeterminateField, false);
5277
- }
5278
- };
5279
- // 如果存在选中方法
5280
- // 如果方法成立,则更新值,否则忽略该数据
5281
- if (treeConfig) {
5282
- XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
5283
- }
5284
- else {
5285
- afterFullData.forEach(checkValFn);
5286
- }
5287
- }
5288
- else {
5289
- /**
5290
- * 默认方式(低性能,无污染)
5291
- * 无需任何属性,直接绑定
5292
- */
5293
- if (treeConfig) {
5294
- if (checked) {
5295
- /**
5296
- * 如果是树勾选
5297
- * 如果方法成立,则添加到临时集合中
5298
- */
5299
- XEUtils.eachTree(afterFullData, (row) => {
5300
- if (isForce || (!checkMethod || checkMethod({ row }))) {
5301
- selectRowMaps[getRowid(this, row)] = row;
5302
- }
5303
- }, { children: childrenField });
5304
- }
5305
- else {
5306
- /**
5307
- * 如果是树取消
5308
- * 如果方法成立,则不添加到临时集合中
5309
- */
5310
- if (!isForce && checkMethod) {
5311
- XEUtils.eachTree(afterFullData, (row) => {
5312
- const rowid = getRowid(this, row);
5313
- if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
5314
- selectRowMaps[rowid] = row;
5315
- }
5316
- }, { children: childrenField });
5317
- }
5318
- }
5319
- }
5320
- else {
5321
- if (checked) {
5322
- /**
5323
- * 如果是行勾选
5324
- * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
5325
- * 如果不存在选中方法,则添加所有数据到临时集合中
5326
- */
5327
- if (!isForce && checkMethod) {
5328
- afterFullData.forEach((row) => {
5329
- const rowid = getRowid(this, row);
5330
- if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
5331
- selectRowMaps[rowid] = row;
5332
- }
5333
- });
5334
- }
5335
- else {
5336
- afterFullData.forEach((row) => {
5337
- selectRowMaps[getRowid(this, row)] = row;
5338
- });
5339
- }
5340
- }
5341
- else {
5342
- /**
5343
- * 如果是行取消
5344
- * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
5345
- * 如果不存在选中方法,无需处理,临时集合默认为空
5346
- */
5347
- if (!isForce && checkMethod) {
5348
- afterFullData.forEach((row) => {
5349
- const rowid = getRowid(this, row);
5350
- if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
5351
- selectRowMaps[rowid] = row;
5352
- }
5353
- });
5354
- }
5355
- }
5356
- }
5357
- }
5358
- if (reserve) {
5359
- if (checked) {
5360
- XEUtils.each(selectRowMaps, (row, rowid) => {
5361
- checkboxReserveRowMap[rowid] = row;
5362
- });
5363
- }
5364
- else {
5365
- afterFullData.forEach((row) => this.handleCheckboxReserveRow(row, false));
5366
- }
5367
- }
5368
- this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
5369
- }
5370
- reactData.isAllSelected = checked;
5371
- reactData.isIndeterminate = false;
5372
- this.treeIndeterminateMaps = {};
5373
- this.treeIndeterminateRowMaps = {};
5374
- this.checkSelectionStatus();
5375
- return this.$nextTick();
5376
- },
5377
5450
  /**
5378
5451
  * 用于多选行,设置所有行的选中状态
5379
5452
  * @param {Boolean} value 是否选中
5380
5453
  */
5381
5454
  setAllCheckboxRow(value) {
5382
- return this.handleCheckedAllCheckboxRow(value, true);
5455
+ const $xeTable = this;
5456
+ return handleCheckedAllCheckboxRow($xeTable, value, true);
5383
5457
  },
5384
5458
  updateCheckboxStatus() {
5385
5459
  const $xeTable = this;
@@ -5541,42 +5615,6 @@ const Methods = {
5541
5615
  $xeTable.updateCheckboxStatus();
5542
5616
  $xeTable.updateAllCheckboxStatus();
5543
5617
  },
5544
- // 还原展开、选中等相关状态
5545
- handleReserveStatus() {
5546
- const $xeTable = this;
5547
- const { expandColumn, treeOpts, treeConfig, fullDataRowIdData, fullAllDataRowIdData, currentRow, selectRadioRow, radioReserveRow, radioOpts, checkboxOpts, selectCheckboxMaps, rowExpandedMaps, treeExpandedMaps, expandOpts } = this;
5548
- // 单选框
5549
- if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
5550
- this.selectRadioRow = null; // 刷新单选行状态
5551
- }
5552
- // 还原保留选中状态
5553
- if (radioOpts.reserve && radioReserveRow) {
5554
- const rowid = getRowid(this, radioReserveRow);
5555
- if (fullDataRowIdData[rowid]) {
5556
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
5557
- }
5558
- }
5559
- // 复选框
5560
- this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps); // 刷新多选行状态
5561
- // 还原保留选中状态
5562
- if (checkboxOpts.reserve) {
5563
- this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true);
5564
- }
5565
- if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
5566
- this.currentRow = null; // 刷新当前行状态
5567
- }
5568
- // 行展开
5569
- this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : []; // 刷新行展开状态
5570
- // 还原保留状态
5571
- if (expandColumn && expandOpts.reserve) {
5572
- this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true);
5573
- }
5574
- // 树展开
5575
- this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : []; // 刷新树展开状态
5576
- if (treeConfig && treeOpts.reserve) {
5577
- this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true);
5578
- }
5579
- },
5580
5618
  /**
5581
5619
  * 获取单选框保留选中的行
5582
5620
  */
@@ -5611,12 +5649,6 @@ const Methods = {
5611
5649
  this.radioReserveRow = null;
5612
5650
  return this.$nextTick();
5613
5651
  },
5614
- handleRadioReserveRow(row) {
5615
- const { radioOpts } = this;
5616
- if (radioOpts.reserve) {
5617
- this.radioReserveRow = row;
5618
- }
5619
- },
5620
5652
  /**
5621
5653
  * 获取复选框保留选中的行
5622
5654
  */
@@ -5670,15 +5702,22 @@ const Methods = {
5670
5702
  }
5671
5703
  },
5672
5704
  handleCheckAllEvent(evnt, value) {
5673
- this.handleCheckedAllCheckboxRow(value);
5705
+ const $xeTable = this;
5706
+ handleCheckedAllCheckboxRow($xeTable, value);
5674
5707
  if (evnt) {
5675
- this.emitEvent('checkbox-all', { records: this.getCheckboxRecords(), reserves: this.getCheckboxReserveRecords(), indeterminates: this.getCheckboxIndeterminateRecords(), checked: value }, evnt);
5708
+ $xeTable.dispatchEvent('checkbox-all', {
5709
+ records: $xeTable.getCheckboxRecords(),
5710
+ reserves: $xeTable.getCheckboxReserveRecords(),
5711
+ indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
5712
+ checked: value
5713
+ }, evnt);
5676
5714
  }
5677
5715
  },
5678
5716
  /**
5679
5717
  * 多选,选中所有事件
5680
5718
  */
5681
5719
  triggerCheckAllEvent(evnt, value) {
5720
+ const $xeTable = this;
5682
5721
  const { checkboxOpts } = this;
5683
5722
  const { trigger } = checkboxOpts;
5684
5723
  if (trigger === 'manual') {
@@ -5687,7 +5726,7 @@ const Methods = {
5687
5726
  if (evnt) {
5688
5727
  evnt.stopPropagation();
5689
5728
  }
5690
- this.handleCheckAllEvent(evnt, value);
5729
+ $xeTable.handleCheckAllEvent(evnt, value);
5691
5730
  },
5692
5731
  /**
5693
5732
  * 多选,切换所有行的选中状态
@@ -5732,11 +5771,12 @@ const Methods = {
5732
5771
  * 处理单选框默认勾选
5733
5772
  */
5734
5773
  handleDefaultRadioChecked() {
5774
+ const $xeTable = this;
5735
5775
  const { radioOpts, fullDataRowIdData } = this;
5736
5776
  const { checkRowKey: rowid, reserve } = radioOpts;
5737
5777
  if (rowid) {
5738
5778
  if (fullDataRowIdData[rowid]) {
5739
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
5779
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
5740
5780
  }
5741
5781
  if (reserve) {
5742
5782
  const rowkey = getRowkey(this);
@@ -5748,6 +5788,7 @@ const Methods = {
5748
5788
  * 单选,行选中事件
5749
5789
  */
5750
5790
  triggerRadioRowEvent(evnt, params) {
5791
+ const $xeTable = this;
5751
5792
  const { selectRadioRow: oldValue, radioOpts } = this;
5752
5793
  const { row } = params;
5753
5794
  const { trigger } = radioOpts;
@@ -5758,7 +5799,7 @@ const Methods = {
5758
5799
  let newValue = row;
5759
5800
  let isChange = oldValue !== newValue;
5760
5801
  if (isChange) {
5761
- this.handleCheckedRadioRow(newValue);
5802
+ handleCheckedRadioRow($xeTable, newValue);
5762
5803
  }
5763
5804
  else if (!radioOpts.strict) {
5764
5805
  isChange = oldValue === newValue;
@@ -5829,22 +5870,13 @@ const Methods = {
5829
5870
  }
5830
5871
  return false;
5831
5872
  },
5832
- handleCheckedRadioRow(row, isForce) {
5833
- const { radioOpts } = this;
5834
- const { checkMethod } = radioOpts;
5835
- if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
5836
- this.selectRadioRow = row;
5837
- this.handleRadioReserveRow(row);
5838
- }
5839
- return this.$nextTick();
5840
- },
5841
5873
  /**
5842
5874
  * 用于单选行,设置某一行为选中状态
5843
5875
  * @param {Row} row 行对象
5844
5876
  */
5845
5877
  setRadioRow(row) {
5846
5878
  const $xeTable = this;
5847
- return $xeTable.handleCheckedRadioRow(row, true);
5879
+ return handleCheckedRadioRow($xeTable, row, true);
5848
5880
  },
5849
5881
  /**
5850
5882
  * 用于单选行,设置某一行为选中状态
@@ -5856,7 +5888,7 @@ const Methods = {
5856
5888
  const { fullAllDataRowIdData } = internalData;
5857
5889
  const rowRest = fullAllDataRowIdData[rowid];
5858
5890
  if (rowRest) {
5859
- return $xeTable.handleCheckedRadioRow(rowRest.row, true);
5891
+ return handleCheckedRadioRow($xeTable, rowRest.row, true);
5860
5892
  }
5861
5893
  return $xeTable.$nextTick();
5862
5894
  },
@@ -7598,7 +7630,7 @@ const Methods = {
7598
7630
  }
7599
7631
  // 如果当前节点已选中,则展开后子节点也被选中
7600
7632
  if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
7601
- this.handleCheckedCheckboxRow(childRows, true);
7633
+ handleCheckedCheckboxRow($xeTable, childRows, true);
7602
7634
  }
7603
7635
  return this.$nextTick().then(() => {
7604
7636
  if (transform) {
@@ -2383,7 +2383,7 @@
2383
2383
  background-color: var(--vxe-ui-layout-background-color);
2384
2384
  }
2385
2385
  .vxe-table--render-default .vxe-table--footer-wrapper {
2386
- margin-top: -1px;
2386
+ margin-top: calc(var(--vxe-ui-table-border-width) * -1);
2387
2387
  background-color: var(--vxe-ui-table-footer-background-color);
2388
2388
  }
2389
2389
  .vxe-table--render-default .vxe-table--header,