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
@@ -54,10 +54,11 @@ const setCustomStorageMap = (id, data) => {
54
54
  maps._v = version;
55
55
  localStorage.setItem(customStorageKey, _xeUtils.default.toJSONString(maps));
56
56
  };
57
- const getRecoverRowMaps = (_vm, keyMaps) => {
57
+ const getRecoverRowMaps = ($xeTable, keyMaps) => {
58
+ const internalData = $xeTable;
58
59
  const {
59
60
  fullAllDataRowIdData
60
- } = _vm;
61
+ } = internalData;
61
62
  const restKeys = {};
62
63
  _xeUtils.default.each(keyMaps, (row, rowid) => {
63
64
  if (fullAllDataRowIdData[rowid]) {
@@ -66,10 +67,11 @@ const getRecoverRowMaps = (_vm, keyMaps) => {
66
67
  });
67
68
  return restKeys;
68
69
  };
69
- function handleReserveRow(_vm, reserveRowMap) {
70
+ function handleReserveRow($xeTable, reserveRowMap) {
71
+ const internalData = $xeTable;
70
72
  const {
71
73
  fullDataRowIdData
72
- } = _vm;
74
+ } = internalData;
73
75
  const reserveList = [];
74
76
  _xeUtils.default.each(reserveRowMap, (item, rowid) => {
75
77
  if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
@@ -868,6 +870,253 @@ function updateStyle($xeTable) {
868
870
  }
869
871
  return $xeTable.$nextTick();
870
872
  }
873
+ function handleRadioReserveRow($xeTable, row) {
874
+ const internalData = $xeTable;
875
+ const radioOpts = $xeTable.computeRadioOpts;
876
+ if (radioOpts.reserve) {
877
+ internalData.radioReserveRow = row;
878
+ }
879
+ }
880
+ function handleCheckboxReserveRow($xeTable, row, checked) {
881
+ const internalData = $xeTable;
882
+ const {
883
+ checkboxReserveRowMap
884
+ } = internalData;
885
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
886
+ if (checkboxOpts.reserve) {
887
+ const rowid = (0, _util.getRowid)($xeTable, row);
888
+ if (checked) {
889
+ checkboxReserveRowMap[rowid] = row;
890
+ } else if (checkboxReserveRowMap[rowid]) {
891
+ delete checkboxReserveRowMap[rowid];
892
+ }
893
+ }
894
+ }
895
+ function handleCheckedRadioRow($xeTable, row, isForce) {
896
+ const reactData = $xeTable;
897
+ const radioOpts = $xeTable.computeRadioOpts;
898
+ const {
899
+ checkMethod
900
+ } = radioOpts;
901
+ if (row && (isForce || !checkMethod || checkMethod({
902
+ row
903
+ }))) {
904
+ reactData.selectRadioRow = row;
905
+ handleRadioReserveRow($xeTable, row);
906
+ }
907
+ return $xeTable.$nextTick();
908
+ }
909
+ function handleCheckedCheckboxRow($xeTable, rows, value, isForce) {
910
+ if (rows && !_xeUtils.default.isArray(rows)) {
911
+ rows = [rows];
912
+ }
913
+ $xeTable.handleBatchSelectRows(rows, !!value, isForce);
914
+ $xeTable.checkSelectionStatus();
915
+ return $xeTable.$nextTick();
916
+ }
917
+ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
918
+ const props = $xeTable;
919
+ const reactData = $xeTable;
920
+ const internalData = $xeTable;
921
+ const {
922
+ treeConfig
923
+ } = props;
924
+ const {
925
+ selectCheckboxMaps
926
+ } = reactData;
927
+ const {
928
+ afterFullData,
929
+ checkboxReserveRowMap
930
+ } = internalData;
931
+ const treeOpts = $xeTable.computeTreeOpts;
932
+ const childrenField = treeOpts.children || treeOpts.childrenField;
933
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
934
+ const {
935
+ checkField,
936
+ reserve,
937
+ checkMethod
938
+ } = checkboxOpts;
939
+ const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
940
+ const selectRowMaps = {};
941
+ /**
942
+ * 绑定属性方式(高性能,有污染)
943
+ * 必须在行数据存在对应的属性,否则将不响应
944
+ */
945
+ if (checkField) {
946
+ const checkValFn = row => {
947
+ if (isForce || !checkMethod || checkMethod({
948
+ row
949
+ })) {
950
+ if (checked) {
951
+ selectRowMaps[(0, _util.getRowid)($xeTable, row)] = row;
952
+ }
953
+ _xeUtils.default.set(row, checkField, checked);
954
+ }
955
+ if (treeConfig && indeterminateField) {
956
+ _xeUtils.default.set(row, indeterminateField, false);
957
+ }
958
+ };
959
+ // 如果存在选中方法
960
+ // 如果方法成立,则更新值,否则忽略该数据
961
+ if (treeConfig) {
962
+ _xeUtils.default.eachTree(afterFullData, checkValFn, {
963
+ children: childrenField
964
+ });
965
+ } else {
966
+ afterFullData.forEach(checkValFn);
967
+ }
968
+ } else {
969
+ /**
970
+ * 默认方式(低性能,无污染)
971
+ * 无需任何属性,直接绑定
972
+ */
973
+ if (treeConfig) {
974
+ if (checked) {
975
+ /**
976
+ * 如果是树勾选
977
+ * 如果方法成立,则添加到临时集合中
978
+ */
979
+ _xeUtils.default.eachTree(afterFullData, row => {
980
+ if (isForce || !checkMethod || checkMethod({
981
+ row
982
+ })) {
983
+ selectRowMaps[(0, _util.getRowid)($xeTable, row)] = row;
984
+ }
985
+ }, {
986
+ children: childrenField
987
+ });
988
+ } else {
989
+ /**
990
+ * 如果是树取消
991
+ * 如果方法成立,则不添加到临时集合中
992
+ */
993
+ if (!isForce && checkMethod) {
994
+ _xeUtils.default.eachTree(afterFullData, row => {
995
+ const rowid = (0, _util.getRowid)($xeTable, row);
996
+ if (checkMethod({
997
+ row
998
+ }) ? 0 : selectCheckboxMaps[rowid]) {
999
+ selectRowMaps[rowid] = row;
1000
+ }
1001
+ }, {
1002
+ children: childrenField
1003
+ });
1004
+ }
1005
+ }
1006
+ } else {
1007
+ if (checked) {
1008
+ /**
1009
+ * 如果是行勾选
1010
+ * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
1011
+ * 如果不存在选中方法,则添加所有数据到临时集合中
1012
+ */
1013
+ if (!isForce && checkMethod) {
1014
+ afterFullData.forEach(row => {
1015
+ const rowid = (0, _util.getRowid)($xeTable, row);
1016
+ if (selectCheckboxMaps[rowid] || checkMethod({
1017
+ row
1018
+ })) {
1019
+ selectRowMaps[rowid] = row;
1020
+ }
1021
+ });
1022
+ } else {
1023
+ afterFullData.forEach(row => {
1024
+ selectRowMaps[(0, _util.getRowid)($xeTable, row)] = row;
1025
+ });
1026
+ }
1027
+ } else {
1028
+ /**
1029
+ * 如果是行取消
1030
+ * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
1031
+ * 如果不存在选中方法,无需处理,临时集合默认为空
1032
+ */
1033
+ if (!isForce && checkMethod) {
1034
+ afterFullData.forEach(row => {
1035
+ const rowid = (0, _util.getRowid)($xeTable, row);
1036
+ if (checkMethod({
1037
+ row
1038
+ }) ? 0 : selectCheckboxMaps[rowid]) {
1039
+ selectRowMaps[rowid] = row;
1040
+ }
1041
+ });
1042
+ }
1043
+ }
1044
+ }
1045
+ }
1046
+ if (reserve) {
1047
+ if (checked) {
1048
+ _xeUtils.default.each(selectRowMaps, (row, rowid) => {
1049
+ checkboxReserveRowMap[rowid] = row;
1050
+ });
1051
+ } else {
1052
+ afterFullData.forEach(row => handleCheckboxReserveRow($xeTable, row, false));
1053
+ }
1054
+ }
1055
+ reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
1056
+ reactData.isAllSelected = checked;
1057
+ reactData.isIndeterminate = false;
1058
+ reactData.treeIndeterminateMaps = {};
1059
+ internalData.treeIndeterminateRowMaps = {};
1060
+ $xeTable.checkSelectionStatus();
1061
+ return $xeTable.$nextTick();
1062
+ }
1063
+ // 还原展开、选中等相关状态
1064
+ function handleReserveStatus($xeTable) {
1065
+ const props = $xeTable;
1066
+ const reactData = $xeTable;
1067
+ const internalData = $xeTable;
1068
+ const {
1069
+ treeConfig
1070
+ } = props;
1071
+ const {
1072
+ expandColumn,
1073
+ currentRow,
1074
+ selectCheckboxMaps,
1075
+ selectRadioRow,
1076
+ rowExpandedMaps,
1077
+ treeExpandedMaps
1078
+ } = reactData;
1079
+ const {
1080
+ fullDataRowIdData,
1081
+ fullAllDataRowIdData,
1082
+ radioReserveRow
1083
+ } = internalData;
1084
+ const expandOpts = $xeTable.computeExpandOpts;
1085
+ const treeOpts = $xeTable.computeTreeOpts;
1086
+ const radioOpts = $xeTable.computeRadioOpts;
1087
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
1088
+ // 单选框
1089
+ if (selectRadioRow && !fullAllDataRowIdData[(0, _util.getRowid)($xeTable, selectRadioRow)]) {
1090
+ reactData.selectRadioRow = null; // 刷新单选行状态
1091
+ }
1092
+ // 还原保留选中状态
1093
+ if (radioOpts.reserve && radioReserveRow) {
1094
+ const rowid = (0, _util.getRowid)($xeTable, radioReserveRow);
1095
+ if (fullDataRowIdData[rowid]) {
1096
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
1097
+ }
1098
+ }
1099
+ // 复选框
1100
+ reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps); // 刷新多选行状态
1101
+ // 还原保留选中状态
1102
+ if (checkboxOpts.reserve) {
1103
+ handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true);
1104
+ }
1105
+ if (currentRow && !fullAllDataRowIdData[(0, _util.getRowid)($xeTable, currentRow)]) {
1106
+ reactData.currentRow = null; // 刷新当前行状态
1107
+ }
1108
+ // 行展开
1109
+ reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {}; // 刷新行展开状态
1110
+ // 还原保留状态
1111
+ if (expandColumn && expandOpts.reserve) {
1112
+ $xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true);
1113
+ }
1114
+ // 树展开
1115
+ reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {}; // 刷新树展开状态
1116
+ if (treeConfig && treeOpts.reserve) {
1117
+ $xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true);
1118
+ }
1119
+ }
871
1120
  function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
872
1121
  const reactData = $xeTable;
873
1122
  const {
@@ -2511,7 +2760,7 @@ const Methods = {
2511
2760
  }
2512
2761
  }
2513
2762
  }
2514
- this.handleReserveStatus();
2763
+ handleReserveStatus($xeTable);
2515
2764
  this.checkSelectionStatus();
2516
2765
  return new Promise(resolve => {
2517
2766
  this.$nextTick().then(() => this.recalculate()).then(() => {
@@ -5778,6 +6027,7 @@ const Methods = {
5778
6027
  * 处理默认勾选
5779
6028
  */
5780
6029
  handleDefaultSelectionChecked() {
6030
+ const $xeTable = this;
5781
6031
  const {
5782
6032
  fullDataRowIdData,
5783
6033
  checkboxOpts
@@ -5787,7 +6037,7 @@ const Methods = {
5787
6037
  checkRowKeys
5788
6038
  } = checkboxOpts;
5789
6039
  if (checkAll) {
5790
- this.handleCheckedAllCheckboxRow(true, true);
6040
+ handleCheckedAllCheckboxRow($xeTable, true, true);
5791
6041
  } else if (checkRowKeys) {
5792
6042
  const defSelection = [];
5793
6043
  checkRowKeys.forEach(rowid => {
@@ -5795,17 +6045,12 @@ const Methods = {
5795
6045
  defSelection.push(fullDataRowIdData[rowid].row);
5796
6046
  }
5797
6047
  });
5798
- this.handleCheckedCheckboxRow(defSelection, true, true);
6048
+ handleCheckedCheckboxRow($xeTable, defSelection, true, true);
5799
6049
  }
5800
6050
  },
5801
6051
  handleCheckedCheckboxRow(rows, value, isForce) {
5802
6052
  const $xeTable = this;
5803
- if (rows && !_xeUtils.default.isArray(rows)) {
5804
- rows = [rows];
5805
- }
5806
- $xeTable.handleBatchSelectRows(rows, !!value, isForce);
5807
- $xeTable.checkSelectionStatus();
5808
- return this.$nextTick();
6053
+ return handleCheckedCheckboxRow($xeTable, rows, value, isForce);
5809
6054
  },
5810
6055
  /**
5811
6056
  * 用于多选行,设置行为选中状态,第二个参数为选中与否
@@ -5817,7 +6062,7 @@ const Methods = {
5817
6062
  if (rows && !_xeUtils.default.isArray(rows)) {
5818
6063
  rows = [rows];
5819
6064
  }
5820
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
6065
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
5821
6066
  },
5822
6067
  setCheckboxRowKey(keys, checked) {
5823
6068
  const $xeTable = this;
@@ -5835,7 +6080,7 @@ const Methods = {
5835
6080
  rows.push(rowRest.row);
5836
6081
  }
5837
6082
  });
5838
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
6083
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
5839
6084
  },
5840
6085
  isCheckedByCheckboxRow(row) {
5841
6086
  const $xeTable = this;
@@ -5931,7 +6176,7 @@ const Methods = {
5931
6176
  if (indeterminateField) {
5932
6177
  _xeUtils.default.set(row, indeterminateField, false);
5933
6178
  }
5934
- $xeTable.handleCheckboxReserveRow(row, checked);
6179
+ handleCheckboxReserveRow($xeTable, row, checked);
5935
6180
  }
5936
6181
  }, {
5937
6182
  children: transform ? mapChildrenField : childrenField
@@ -5945,7 +6190,7 @@ const Methods = {
5945
6190
  row
5946
6191
  })) {
5947
6192
  _xeUtils.default.set(row, checkField, checked);
5948
- $xeTable.handleCheckboxReserveRow(row, checked);
6193
+ handleCheckboxReserveRow($xeTable, row, checked);
5949
6194
  }
5950
6195
  });
5951
6196
  }
@@ -5967,7 +6212,7 @@ const Methods = {
5967
6212
  delete selectRowMaps[rowid];
5968
6213
  }
5969
6214
  }
5970
- $xeTable.handleCheckboxReserveRow(row, checked);
6215
+ handleCheckboxReserveRow($xeTable, row, checked);
5971
6216
  }
5972
6217
  }, {
5973
6218
  children: transform ? mapChildrenField : childrenField
@@ -5990,7 +6235,7 @@ const Methods = {
5990
6235
  delete selectRowMaps[rowid];
5991
6236
  }
5992
6237
  }
5993
- $xeTable.handleCheckboxReserveRow(row, checked);
6238
+ handleCheckboxReserveRow($xeTable, row, checked);
5994
6239
  }
5995
6240
  });
5996
6241
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -6034,6 +6279,7 @@ const Methods = {
6034
6279
  }
6035
6280
  },
6036
6281
  triggerCheckRowEvent(evnt, params, checked) {
6282
+ const $xeTable = this;
6037
6283
  const {
6038
6284
  checkboxOpts,
6039
6285
  afterFullData
@@ -6058,7 +6304,7 @@ const Methods = {
6058
6304
  if (_rowIndex !== _firstRowIndex) {
6059
6305
  this.setAllCheckboxRow(false);
6060
6306
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
6061
- this.handleCheckedCheckboxRow(rangeRows, true, false);
6307
+ handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
6062
6308
  this.emitEvent('checkbox-range-select', Object.assign({
6063
6309
  rangeRecords: rangeRows
6064
6310
  }, params), evnt);
@@ -6096,168 +6342,13 @@ const Methods = {
6096
6342
  $xeTable.checkSelectionStatus();
6097
6343
  return $xeTable.$nextTick();
6098
6344
  },
6099
- handleCheckedAllCheckboxRow(checked, isForce) {
6100
- const $xeTable = this;
6101
- const reactData = $xeTable;
6102
- const {
6103
- afterFullData,
6104
- treeConfig,
6105
- treeOpts,
6106
- selectCheckboxMaps,
6107
- checkboxReserveRowMap,
6108
- checkboxOpts,
6109
- afterFullRowMaps
6110
- } = this;
6111
- const {
6112
- checkField,
6113
- reserve,
6114
- checkStrictly,
6115
- checkMethod
6116
- } = checkboxOpts;
6117
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
6118
- const childrenField = treeOpts.children || treeOpts.childrenField;
6119
- const selectRowMaps = {};
6120
- // 疑惑!
6121
- if (!treeConfig) {
6122
- _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
6123
- if (!afterFullRowMaps[rowid]) {
6124
- selectRowMaps[rowid] = row;
6125
- }
6126
- });
6127
- }
6128
- // 疑惑!
6129
- if (checkStrictly) {
6130
- this.isAllSelected = checked;
6131
- } else {
6132
- /**
6133
- * 绑定属性方式(高性能,有污染)
6134
- * 必须在行数据存在对应的属性,否则将不响应
6135
- */
6136
- if (checkField) {
6137
- const checkValFn = row => {
6138
- if (isForce || !checkMethod || checkMethod({
6139
- row
6140
- })) {
6141
- if (checked) {
6142
- selectRowMaps[(0, _util.getRowid)(this, row)] = row;
6143
- }
6144
- _xeUtils.default.set(row, checkField, checked);
6145
- }
6146
- if (treeConfig && indeterminateField) {
6147
- _xeUtils.default.set(row, indeterminateField, false);
6148
- }
6149
- };
6150
- // 如果存在选中方法
6151
- // 如果方法成立,则更新值,否则忽略该数据
6152
- if (treeConfig) {
6153
- _xeUtils.default.eachTree(afterFullData, checkValFn, {
6154
- children: childrenField
6155
- });
6156
- } else {
6157
- afterFullData.forEach(checkValFn);
6158
- }
6159
- } else {
6160
- /**
6161
- * 默认方式(低性能,无污染)
6162
- * 无需任何属性,直接绑定
6163
- */
6164
- if (treeConfig) {
6165
- if (checked) {
6166
- /**
6167
- * 如果是树勾选
6168
- * 如果方法成立,则添加到临时集合中
6169
- */
6170
- _xeUtils.default.eachTree(afterFullData, row => {
6171
- if (isForce || !checkMethod || checkMethod({
6172
- row
6173
- })) {
6174
- selectRowMaps[(0, _util.getRowid)(this, row)] = row;
6175
- }
6176
- }, {
6177
- children: childrenField
6178
- });
6179
- } else {
6180
- /**
6181
- * 如果是树取消
6182
- * 如果方法成立,则不添加到临时集合中
6183
- */
6184
- if (!isForce && checkMethod) {
6185
- _xeUtils.default.eachTree(afterFullData, row => {
6186
- const rowid = (0, _util.getRowid)(this, row);
6187
- if (checkMethod({
6188
- row
6189
- }) ? 0 : selectCheckboxMaps[rowid]) {
6190
- selectRowMaps[rowid] = row;
6191
- }
6192
- }, {
6193
- children: childrenField
6194
- });
6195
- }
6196
- }
6197
- } else {
6198
- if (checked) {
6199
- /**
6200
- * 如果是行勾选
6201
- * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
6202
- * 如果不存在选中方法,则添加所有数据到临时集合中
6203
- */
6204
- if (!isForce && checkMethod) {
6205
- afterFullData.forEach(row => {
6206
- const rowid = (0, _util.getRowid)(this, row);
6207
- if (selectCheckboxMaps[rowid] || checkMethod({
6208
- row
6209
- })) {
6210
- selectRowMaps[rowid] = row;
6211
- }
6212
- });
6213
- } else {
6214
- afterFullData.forEach(row => {
6215
- selectRowMaps[(0, _util.getRowid)(this, row)] = row;
6216
- });
6217
- }
6218
- } else {
6219
- /**
6220
- * 如果是行取消
6221
- * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
6222
- * 如果不存在选中方法,无需处理,临时集合默认为空
6223
- */
6224
- if (!isForce && checkMethod) {
6225
- afterFullData.forEach(row => {
6226
- const rowid = (0, _util.getRowid)(this, row);
6227
- if (checkMethod({
6228
- row
6229
- }) ? 0 : selectCheckboxMaps[rowid]) {
6230
- selectRowMaps[rowid] = row;
6231
- }
6232
- });
6233
- }
6234
- }
6235
- }
6236
- }
6237
- if (reserve) {
6238
- if (checked) {
6239
- _xeUtils.default.each(selectRowMaps, (row, rowid) => {
6240
- checkboxReserveRowMap[rowid] = row;
6241
- });
6242
- } else {
6243
- afterFullData.forEach(row => this.handleCheckboxReserveRow(row, false));
6244
- }
6245
- }
6246
- this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
6247
- }
6248
- reactData.isAllSelected = checked;
6249
- reactData.isIndeterminate = false;
6250
- this.treeIndeterminateMaps = {};
6251
- this.treeIndeterminateRowMaps = {};
6252
- this.checkSelectionStatus();
6253
- return this.$nextTick();
6254
- },
6255
6345
  /**
6256
6346
  * 用于多选行,设置所有行的选中状态
6257
6347
  * @param {Boolean} value 是否选中
6258
6348
  */
6259
6349
  setAllCheckboxRow(value) {
6260
- return this.handleCheckedAllCheckboxRow(value, true);
6350
+ const $xeTable = this;
6351
+ return handleCheckedAllCheckboxRow($xeTable, value, true);
6261
6352
  },
6262
6353
  updateCheckboxStatus() {
6263
6354
  const $xeTable = this;
@@ -6436,57 +6527,6 @@ const Methods = {
6436
6527
  $xeTable.updateCheckboxStatus();
6437
6528
  $xeTable.updateAllCheckboxStatus();
6438
6529
  },
6439
- // 还原展开、选中等相关状态
6440
- handleReserveStatus() {
6441
- const $xeTable = this;
6442
- const {
6443
- expandColumn,
6444
- treeOpts,
6445
- treeConfig,
6446
- fullDataRowIdData,
6447
- fullAllDataRowIdData,
6448
- currentRow,
6449
- selectRadioRow,
6450
- radioReserveRow,
6451
- radioOpts,
6452
- checkboxOpts,
6453
- selectCheckboxMaps,
6454
- rowExpandedMaps,
6455
- treeExpandedMaps,
6456
- expandOpts
6457
- } = this;
6458
- // 单选框
6459
- if (selectRadioRow && !fullAllDataRowIdData[(0, _util.getRowid)($xeTable, selectRadioRow)]) {
6460
- this.selectRadioRow = null; // 刷新单选行状态
6461
- }
6462
- // 还原保留选中状态
6463
- if (radioOpts.reserve && radioReserveRow) {
6464
- const rowid = (0, _util.getRowid)(this, radioReserveRow);
6465
- if (fullDataRowIdData[rowid]) {
6466
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
6467
- }
6468
- }
6469
- // 复选框
6470
- this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps); // 刷新多选行状态
6471
- // 还原保留选中状态
6472
- if (checkboxOpts.reserve) {
6473
- this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true);
6474
- }
6475
- if (currentRow && !this.fullAllDataRowIdData[(0, _util.getRowid)($xeTable, currentRow)]) {
6476
- this.currentRow = null; // 刷新当前行状态
6477
- }
6478
- // 行展开
6479
- this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : []; // 刷新行展开状态
6480
- // 还原保留状态
6481
- if (expandColumn && expandOpts.reserve) {
6482
- this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true);
6483
- }
6484
- // 树展开
6485
- this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : []; // 刷新树展开状态
6486
- if (treeConfig && treeOpts.reserve) {
6487
- this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true);
6488
- }
6489
- },
6490
6530
  /**
6491
6531
  * 获取单选框保留选中的行
6492
6532
  */
@@ -6528,14 +6568,6 @@ const Methods = {
6528
6568
  this.radioReserveRow = null;
6529
6569
  return this.$nextTick();
6530
6570
  },
6531
- handleRadioReserveRow(row) {
6532
- const {
6533
- radioOpts
6534
- } = this;
6535
- if (radioOpts.reserve) {
6536
- this.radioReserveRow = row;
6537
- }
6538
- },
6539
6571
  /**
6540
6572
  * 获取复选框保留选中的行
6541
6573
  */
@@ -6598,12 +6630,13 @@ const Methods = {
6598
6630
  }
6599
6631
  },
6600
6632
  handleCheckAllEvent(evnt, value) {
6601
- this.handleCheckedAllCheckboxRow(value);
6633
+ const $xeTable = this;
6634
+ handleCheckedAllCheckboxRow($xeTable, value);
6602
6635
  if (evnt) {
6603
- this.emitEvent('checkbox-all', {
6604
- records: this.getCheckboxRecords(),
6605
- reserves: this.getCheckboxReserveRecords(),
6606
- indeterminates: this.getCheckboxIndeterminateRecords(),
6636
+ $xeTable.dispatchEvent('checkbox-all', {
6637
+ records: $xeTable.getCheckboxRecords(),
6638
+ reserves: $xeTable.getCheckboxReserveRecords(),
6639
+ indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
6607
6640
  checked: value
6608
6641
  }, evnt);
6609
6642
  }
@@ -6612,6 +6645,7 @@ const Methods = {
6612
6645
  * 多选,选中所有事件
6613
6646
  */
6614
6647
  triggerCheckAllEvent(evnt, value) {
6648
+ const $xeTable = this;
6615
6649
  const {
6616
6650
  checkboxOpts
6617
6651
  } = this;
@@ -6624,7 +6658,7 @@ const Methods = {
6624
6658
  if (evnt) {
6625
6659
  evnt.stopPropagation();
6626
6660
  }
6627
- this.handleCheckAllEvent(evnt, value);
6661
+ $xeTable.handleCheckAllEvent(evnt, value);
6628
6662
  },
6629
6663
  /**
6630
6664
  * 多选,切换所有行的选中状态
@@ -6678,6 +6712,7 @@ const Methods = {
6678
6712
  * 处理单选框默认勾选
6679
6713
  */
6680
6714
  handleDefaultRadioChecked() {
6715
+ const $xeTable = this;
6681
6716
  const {
6682
6717
  radioOpts,
6683
6718
  fullDataRowIdData
@@ -6688,7 +6723,7 @@ const Methods = {
6688
6723
  } = radioOpts;
6689
6724
  if (rowid) {
6690
6725
  if (fullDataRowIdData[rowid]) {
6691
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
6726
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
6692
6727
  }
6693
6728
  if (reserve) {
6694
6729
  const rowkey = (0, _util.getRowkey)(this);
@@ -6702,6 +6737,7 @@ const Methods = {
6702
6737
  * 单选,行选中事件
6703
6738
  */
6704
6739
  triggerRadioRowEvent(evnt, params) {
6740
+ const $xeTable = this;
6705
6741
  const {
6706
6742
  selectRadioRow: oldValue,
6707
6743
  radioOpts
@@ -6719,7 +6755,7 @@ const Methods = {
6719
6755
  let newValue = row;
6720
6756
  let isChange = oldValue !== newValue;
6721
6757
  if (isChange) {
6722
- this.handleCheckedRadioRow(newValue);
6758
+ handleCheckedRadioRow($xeTable, newValue);
6723
6759
  } else if (!radioOpts.strict) {
6724
6760
  isChange = oldValue === newValue;
6725
6761
  if (isChange) {
@@ -6816,28 +6852,13 @@ const Methods = {
6816
6852
  }
6817
6853
  return false;
6818
6854
  },
6819
- handleCheckedRadioRow(row, isForce) {
6820
- const {
6821
- radioOpts
6822
- } = this;
6823
- const {
6824
- checkMethod
6825
- } = radioOpts;
6826
- if (row && (isForce || !checkMethod || checkMethod({
6827
- row
6828
- }))) {
6829
- this.selectRadioRow = row;
6830
- this.handleRadioReserveRow(row);
6831
- }
6832
- return this.$nextTick();
6833
- },
6834
6855
  /**
6835
6856
  * 用于单选行,设置某一行为选中状态
6836
6857
  * @param {Row} row 行对象
6837
6858
  */
6838
6859
  setRadioRow(row) {
6839
6860
  const $xeTable = this;
6840
- return $xeTable.handleCheckedRadioRow(row, true);
6861
+ return handleCheckedRadioRow($xeTable, row, true);
6841
6862
  },
6842
6863
  /**
6843
6864
  * 用于单选行,设置某一行为选中状态
@@ -6851,7 +6872,7 @@ const Methods = {
6851
6872
  } = internalData;
6852
6873
  const rowRest = fullAllDataRowIdData[rowid];
6853
6874
  if (rowRest) {
6854
- return $xeTable.handleCheckedRadioRow(rowRest.row, true);
6875
+ return handleCheckedRadioRow($xeTable, rowRest.row, true);
6855
6876
  }
6856
6877
  return $xeTable.$nextTick();
6857
6878
  },
@@ -8939,7 +8960,7 @@ const Methods = {
8939
8960
  }
8940
8961
  // 如果当前节点已选中,则展开后子节点也被选中
8941
8962
  if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
8942
- this.handleCheckedCheckboxRow(childRows, true);
8963
+ handleCheckedCheckboxRow($xeTable, childRows, true);
8943
8964
  }
8944
8965
  return this.$nextTick().then(() => {
8945
8966
  if (transform) {